Bài giảng Lập trình Net với C# - Chương 4: Lập trình WinForm với C# nêu lên việc sử dụng Windows Forms, cấu trúc Windows Forms, sử dụng Windows Forms, thực hiện Windows Forms, sử dụng các Control, thừa kế của Windows Forms.
7/5/16 LẬP TRÌNH WINFORM VỚI C# PHAN TRỌNG TIẾN BM Công nghệ phần mềm Khoa Công nghệ thông tin, VNUA Email: phantien84@gmail.com Website: http://timoday.edu.vn 7/5/16 Lập trình WinForm với C# Giới thiệu chung q Sử dụng IDE (Integrated Development Environment) VS để phát triển nhanh ứng dụng q Sử dụng thư viện Windows Forms để phát triển ứng dụng desktop client server chạy môi trường Windows q Thiết kế giao diện sử dụng IDE viết code C# q Các tiêu chuẩn ứng dụng dạng Windows Forms q Tìm hiểu control thuộc tính thơng dụng control 7/5/16 Lập trình WinForm với C# 7/5/16 Nội dung 1. 2. 3. 4. 5. 6. 7. 8. 9. 7/5/16 Tổng quan Tại sử dụng Windows Forms Cấu trúc Windows Forms Sử dụng Windows Forms Demo: Thực Windows Forms Sử dụng Control Demo: Thực thi chức kéo thả Thừa kế Windows Forms Demo: Sử dụng thừu kế Windows Forms Lập trình WinForm với C# Mục đích chương q Chương cung cấp sinh viên kiến thức cần thiết để tạo ứng dụng Winform q Sau sinh viên có thể: q Mơ tả lợi ích Windows Forms q Cách sử dụng thuộc tính, phương thức kiện lớp Form control q Sử dụng thuộc tính phương thức Windows Forms q Viết code cho kiện điều khiển q Sử dụng control control cải tiến q Thêm chỉnh sửa menu q Tạo form thừa kế từ form khác 7/5/16 Lập trình WinForm với C# 7/5/16 Tổng quan q Bạn nắm đặc điểm có sẵn Windows Forms, cách thay đổi form control, thuộc tính, phương thức, kiện q Bạn học cách tạo vài dạng hộp thoại chuẩn Windows q Nắm tính thừa kế, cho phép bạn sử dụng kỹ thuật lập trình hướng đối tượng vào form bạn 7/5/16 Lập trình WinForm với C# Tại sử dụng Windows Forms q Có tập hợp cotrol q Hỗ trợ khả truy phong phú q Nhiều kiểu giao diện q Hỗ trợ cải tiến việc in ấn q Hỗ trợ cải tiến đồ họa – GDI+ cập qua thuộc tính control q Hỗ trợ thừa kế q Các đối tượng cải tiến q Thuận lợi cho thiết kế forms 7/5/16 Lập trình WinForm với C# 7/5/16 Cấu trúc Windows Forms q Phân cấp lớp Windows Forms q Sử dụng lớp Windows.Forms.Appication q Nghiên cứu Code Behind Windows Forms 7/5/16 Lập trình WinForm với C# Phân cấp lớp Windows Forms 7/5/16 Lập trình WinForm với C# 7/5/16 Sử dụng lớp Windows.Forms.Application q Bắt đầu kết thúc ứng dụng static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } q Thiết lập thông tin truy vấn thông tin ứng dụng string strAppPath = Application.StartupPath; ‘lấy đường dẫn chứa nơi cài file chạy 7/5/16 Lập trình WinForm với C# Nghiên cứu Code Behind Windows Forms q Imports q Truy cập chức namespace tham chiếu assemblies using System.Windows.Forms q Class q Thừ kế từ System.Windows.Forms.Form q Contructor – public Form1() q Initializer – void InitializeComponent() q Detructor – void Dispose() 7/5/16 Lập trình WinForm với C# 10 7/5/16 Sử dụng Windows Forms q Sử dụng Form Properties q Sử dụng Form Methods q Sử dụng Form Events q Điều khiển kiện q Tạo Form MDI q Sử dụng dạng hộp thoại chuẩn 7/5/16 Lập trình WinForm với C# 11 Sử dụng Form Properties q Kích Form Control có hộp thoại Form Properties tương ứng 7/5/16 Lập trình WinForm với C# 12 7/5/16 Sử dụng Form Properties q DialogResult q Font q Opacity q MaximumSize MinimumSize q TopMost q AcceptButton CancelButton 7/5/16 Lập trình WinForm với C# 13 Sử dụng Form Methods q CenterToScreen CenterToParrent q Close q Show ShowDialog 7/5/16 Lập trình WinForm với C# 14 7/5/16 Sử dụng Form Events q Trên cửa sổ Properties > Chọn biểu tượng Events 7/5/16 Lập trình WinForm với C# 15 Sử dụng Form Events q Activated DeActivate q Activated xảy Form kích hoạt người dùng tương tác q DeActive xảy Form focus q FormClosing q Xảy Form chuẩn bị đóng q FormClosed q Xảy sau kiện Closing trước Dispose q MenuStart MenuComplete q Xảy menu nhận focus 7/5/16 Lập trình WinForm với C# 16 7/5/16 Điều khiển kiện q Điều khiển nhiều kiện với thủ tục private void Form1_Activated(object sender, EventArgs e) { Debug.WriteLine("Form1 Activated!"); this.Text = "Form Activated!"; } q Giải thích: q “sender”: tham chiếu tới đối tượng mà gọi kiện Nó hữu ích trường hợp có nhiều đối tượng sử dụng chung kiện q “e”: chứa thông tin control mà người dùng nhận diện hành vi cách thực control q Tuỳ vào kiện khác mà tham số thứ khác 7/5/16 Lập trình WinForm với C# 17 Demo dùng kiện q Tạo ứng dụng dạng WinForms hiển thị thông tin sổ q Code cho kiện q Form1_Activated Debug.WriteLine("Activated") q Form1_Closed Debug.WriteLine("Closing") q Form1_Deactivate Debug.WriteLine("Deactivated") q Form1_SizeChanged Debug.WriteLine("Size changed") 7/5/16 Lập trình WinForm với C# 18 7/5/16 Tạo Form MDI q Tạo Form cha q Bạn đặt thuộc tính IsMdiContainer q Hoặc code kiện Form_Load this.IsMdiContainer = True this.WindowState = FormWindowState.Maximized q Tạo Form frmChild frm = new frmChild(); frm.MdiParent = this; frm.Show(); q Truy cập Form q Sắp xếp Form 7/5/16 Lập trình WinForm với C# 19 Sử dụng dạng hộp thoại chuẩn q Lớp MessageBox if(MessageBox.Show("Ban co muon tiep tuc?","Thong bao",MessageBoxButtons.OKCancel) == DialogResult.OK) { //Ban viet code o day } 7/5/16 Lập trình WinForm với C# 20 10 7/5/16 Demo: Sử dụng Windows Forms q Bạn học cách dùng Properties Methods Window Form, bao gồm tạo Form riêng, độ suốt Form, cuộn tự động cho Form 7/5/16 Lập trình WinForm với C# 21 Sử dụng control q Các control q Các control q Sử dụng Properties Control q Sử dụng Methods Control q Tạo Menus q Cung cấp Help cho người sử dụng q Thực chức Kéo – Thả 7/5/16 Lập trình WinForm với C# 22 11 7/5/16 Các control q Label: hiển thị icons text không sửa đc q Textbox: nhập liệu từ bàn phím hiển thị q Button: bắt kiện kích chuột q CheckBox: cho người dùng chọn không chọn q ComboBox: danh sách đổ xuống q ListBox: danh sách item để chọn q Panel: cho phép bố trí control khác q PictureBox: hiển thị ảnh 7/5/16 Lập trình WinForm với C# 23 Các thuộc tính kiện thơng dụng Control Mơ tả Label Thuộc tính: Font Thay đổi Font chữ Label Thuộc tính: Text Text hiển thị Label Thuộc tính: TextAlign Căn chỉnh vị trí Text (left, center, right, bottom, middle, top) Thuộc tính: Name Tên dùng để viết code TextBox Thuộc tính: Font Thay đổi Font control Thuộc tính: Text Hiển thị text control Thuộc tính: Multiline Nếu true textbox nhập nhiều dịng Thuộc tính: ReadOnly Nếu true textbox khơng thể nhập Sự kiện: Keypress Xảy bàn phím ấn Sự kiện: TextChanged Khi liệu text thay đổi 7/5/16 Lập trình WinForm với C# 24 12 7/5/16 Các thuộc tính kiện thơng dụng Control Mơ tả Button Thuộc tính: Text Text hiển thị control Sự kiện: Click Xảy người dùng click vào nút CheckBox Thuộc tính: Checked Chỉ định control chọn Thuộc tính: Text Text hiển thị control Sự kiện: CheckedChanged Xảy checkbox chọn không chọn ComboBox ListBox Thuộc tính: Items Tập item control Sự kiện: SelectedIndexChanged Xảy item control chọn 7/5/16 Lập trình WinForm với C# 25 Các thuộc tính kiện thơng dụng Control Mơ tả Panel Thuộc tính: AutoScroll Chỉ định Panel khơng đủ lớn chứa control khác xuất cuộn Thuộc tính: BorderStyle Thiết lập đường viền Panel PictureBox Thuộc tính: Image Thiết lập ảnh thị PictureBox Thuộc tính: SizeMode Kích thước vị trí ảnh so với control Các giá trị: Normal, StretchImage, AutoSize, CenterImage Sự kiện: Click Xảy picturebox kích 7/5/16 Lập trình WinForm với C# 26 13 7/5/16 Các control q CheckedListBox q LinkLabel q Spliter q ToolTip q NotifyIcon 7/5/16 Lập trình WinForm với C# 27 Sử dụng Properties Control q Đặt vị trí Control q Anchor q Location q Thuộc tính Text Button1.Text = "Click Me" 7/5/16 Lập trình WinForm với C# 28 14 7/5/16 Sử dụng Methods Control q BringToFront SendToBack Button1.BringToFront( ) Button2.SendToBack( ) q Focus TextBox1.Focus( ) TextBox1.SelectAll( ) 7/5/16 Lập trình WinForm với C# 29 Tạo Menus q Các lớp Menu q Tạo Menu lúc thiết kế q Sử dụng Menu Designer q Tạo Menu lúc chạy private System.Windows.Forms.MenuStrip menuStrip1; private System.Windows.Forms.ToolStripMenuItem mnuArrange; private System.Windows.Forms.ToolStripMenuItem mnuArrangeCasscade; this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {this.mnuArrange}); this.mnuArrange.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.mnuArrangeCasscade}); this.Controls.Add(this.menuStrip1); this.MainMenuStrip = this.menuStrip1; 7/5/16 Lập trình WinForm với C# 30 15 7/5/16 Cung cấp Help cho người sử dụng q Control ErrorProvider q Icon lỗi xuất control kế tiếp, message xuất giống ToolTip chuột di chuyển qua Icon q Được sử dụng kiểm tra liệu đầu vào q Control HelpProvider q Gắn file trợ giúp dạng *.chm, *.hlp, *.html q Control cung cấp thông tin trợ giúp qua thuộc tính HelpString HelpTopic 7/5/16 Lập trình WinForm với C# 31 Demo: Sử dụng Controls q Cách bố trí thuộc tính control Button q Thực thi kiện cho control q Cuối cùng, cung cấp trợ giúp người sử dụng qua control HelpProvider ToolTip cách lập trình tạo context menu 7/5/16 Lập trình WinForm với C# 32 16 7/5/16 Thực thi chức Kéo – Thả q Xử lý q Dùng kiện MouseDown phương thức DoDragDrop kiện control kéo q Tiếp tục dùng kiện DragOver control thả, thiết lập thuộc tính Effect tham số DragEventsArg kiện q Sự kiện cuối DragDrop thực thả liệu q Dùng phương thức Data.GetData kết hợp tham số DataFormats để lấy liệu kéo tới 7/5/16 Lập trình WinForm với C# 33 Demo: Thực thi chức Kéo – Thả q Thực thi chức kéo thả qua ví dụ đơn giản 7/5/16 Lập trình WinForm với C# 34 17 7/5/16 Thừa kế Windows Forms q Tại thừa kế từ Form q Tạo Form sở (Form Base) q Tạo Form thừa kế q Thay đổi Form Base 7/5/16 Lập trình WinForm với C# 35 Tại thừa kế từ Form q Một Form class, dùng thừa kế q Các ứng dụng có giao diện hoạt động theo chuẩn q Các thay đổi form sở tác động tới form thừa kế q Các ví dụ: q Các form Wizard q Các form Logon 7/5/16 Lập trình WinForm với C# 36 18 7/5/16 Tạo Form sở (Form Base) q Lên kế hoạch Form Base cách cẩn thận q Tạo Form Base form thông thường q Thiết lập thuộc tính truy cập cho control q Private – Control truy cập form Base q Protected – control truy cập form kế thừa q Public – Control truy câp module q Thêm từ khóa Overridable tới Method cách thích hợp q Build Solution cho Form Base 7/5/16 Lập trình WinForm với C# 37 Tạo form thừa kế q Đảm bảo form base hoàn thành q Tham chiếu tới Assembly q Tạo form thừa kế q Thay đổi thuộc tính cần thiết q Viết chồng Method Event có yêu cầu 7/5/16 Lập trình WinForm với C# 38 19 7/5/16 Thay đổi Form Base q Thay đổi Form Base q Các thay đổi tác động tới form kế thừa Rebuilt q Kiểm tra form kế thừa q Kiểm tra thay đổi trước rebuilt lại ứng dụng q Kiểm tra lại sau rebuilt lại ứng dụng 7/5/16 Lập trình WinForm với C# 39 Demo: Sử dụng thừa kế Windows Forms q Tạo lớp Base phục vụ cho mục đích thừa kế q Viết chồng Propety, Method control form base q Thay đổi form base sau thừa kế 7/5/16 Lập trình WinForm với C# 40 20 7/5/16 Tổng kết q Các lợi ích Windows Forms? q Lớp ContainerControl lớp sở cho control khác hay sai? q Viết code để truy cập tới đường dẫn file chạy ứng dụng q Viết code để gọi btnOK người sử dụng ấn phím Enter q Liệt kê control cung cấp trợ giúp cho người sử dụng q Viết code để tạo menu Help với menu About lúc chạy chương trình 7/5/16 Lập trình WinForm với C# 41 Tài liệu tham khảo q Windows Forms Programming With C# - WIN0095 – Aptech Worldwide q https://msdn.microsoft.com/en-gb/library/aa288436(v=vs 71).aspx q http://www.worldbestlearningcenter.com/index_files/ csharp_tutorial_lesson.htm 7/5/16 Lập trình WinForm với C# 42 21 ... Help với menu About lúc chạy chương trình 7/5/16 Lập trình WinForm với C# 41 Tài liệu tham khảo q Windows Forms Programming With C# - WIN0095 – Aptech Worldwide q https://msdn.microsoft.com/en-gb/library/aa288436(v=vs... AcceptButton CancelButton 7/5/16 Lập trình WinForm với C# 13 Sử dụng Form Methods q CenterToScreen CenterToParrent q Close q Show ShowDialog 7/5/16 Lập trình WinForm với C# 14 7/5/16 Sử dụng Form... dạng hộp thoại chuẩn 7/5/16 Lập trình WinForm với C# 11 Sử dụng Form Properties q Kích Form Control có hộp thoại Form Properties tương ứng 7/5/16 Lập trình WinForm với C# 12 7/5/16 Sử dụng Form