Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
425,96 KB
Nội dung
PháttriểnứngdụngvớiWindows Form. 3.1 Tạo một WindowsForm đơn giản WindowsForm là công cụ dùng để tạo các ứngdụng Windows, nó mượn các ưu điểm mạnh của ngôn ngữ Visual Basic : dễ sử dụng, hỗ trợ mô hình RAD đồng thời kết hợp với tính linh động, hướng đối tượng của ngôn ngữ C#. Việc tạo ứngdụngWindows trở lên hấp dẫn và quen thuộc với các lập trình viên.Trong phần này, ta sẽ thảo luận hai cách khi tạo một ứngdụngWindows : Dùng bộ soạn mã để gõ mã trực tiếp hoặc dùng bộ công cụ kéo thả của IDE. Ứngdụng của chúng ta khi chạy sẽ xuất dòng chữ “Hello World!” ra màn hình, khi người dùng nhấn vào Button “Cancel” thì ứngdụng sẽ kết thúc. Hình 2- Ứngdụng minh họa việc hiển thị chuỗi và bắt sự kiện của Button. Đầu tiên, ta dùng lệnh using để thêm vùng tên sau : using System.Windows.Forms; Ta sẽ cho ứngdụng của ta thừa kế từ vùng tên Form : public class HandDrawnClass : Form Bất kỳ một ứngdụngWindowsForm nào cũng đều thừa kế từ đối tượng Form, ta có thể dùng đối tượng này để tạo ra các cửa sổ chuẩn như : các cửa sổ trôi (floating form), thanh công cụ (tools), hộp thoại (dialog box) … Mọi Điều khiển trong bộ công cụ của WindowsForm (Label, Button, Listbox …) đều thuộc vùng tên này. Ta sẽ khai báo 2 đối tượng, một Label để giữ chuỗi ‘ Hello World !’ và một Button để bắt sự kiện kết thúc ứng dụng. private System.Windows.Forms.Label lblOutput; private System.Windows.Forms.Button btnCancel; Tiếp theo ta sẽ khởi tạo 2 đối tượng trên trong hàm khởi tạo của Form: this.lblOutput = new System.Windows.Forms.Label( ); this.btnCancel = new System.Windows.Forms.Button( ); Sau đó ta gán chuỗi tiêu đề cho Form của ta là ‘Hello World‘ : this.Text = "Hello World"; Gán vị trí, chuỗi và kích thước cho đối tượng Label : lblOutput.Location = new System.Drawing.Point (16, 24); lblOutput.Text = "Hello World!"; lblOutput.Size = new System.Drawing.Size (216, 24); Vị trí của Label được xác định bằng một đối tượng Point, đối tượng này cần hai thông số : vị trí so với chiều ngang (horizontal) và đứng (vertical) của thanh cuộn. Kích thước của Label cũng được đặt bởi đối tượng Size, với hai thông số là chiều rộng (width) và cao (height) của Label. Cả hai đối tượng Point và Size đều thuộc vùng tên System.Drawing : chứa các đối tượng và lớp dùng cho đồ họa. Tương tự làm với đối tượng Button : btnCancel.Location = new System.Drawing.Point (150,200); btnCancel.Size = new System.Drawing.Size (112, 32); btnCancel.Text = "&Cancel"; Để bắt sự kiện click của Button, đối tượng Button cần đăng ký với trình quản lý sự kiện, để thực hiện điều này ta dùng ‘delegate’. Phương thức được ủy thác (sẽ bắt sự kiện) có thể có tên bất kỳ nhưng phải trả về kiểu void và phải có hai thông số : một là đối tượng ‘sender’ và một là đối tượng ‘System.EventArgs’. protected void btnCancel_Click( object sender, System.EventArgs e) { // . } Ta đăng ký phương thức bắt sự kiện theo hai bước. Đầu tiên, ta tạo một trình quản lý sự kiện mới System.EventHandler, rồi đẩy tên của phương thức bắt sự kiện vào làm tham số : new System.EventHandler (this.btnCancel_Click); Tiếp theo ta sẽ ủy thác trình quản lý vừa tạo ở trên cho sự kiện click của Button bằng toán tử +=.Mã gộp của hai bước trên : one:btnCancel.Click +=new System.EventHandler (this.btnCancel_Click); Để kết thúc việc viết mã trong hàm khởi tạo của Form, ta sẽ thêm hai đối tượng Label và button vào Form của ta : this.Controls.Add (this.btnCancel); this.Controls.Add (this.lblOutput); Sau khi ta đã định nghĩa hàm bắt sự kiện click trên Button, ta sẽ viết mã thi hành cho hàm này. Ta sẽ dùng hàm tĩnh ( static ) Exit() của lớp Application để kết thúc ứngdụng : protected void btnCancel_Click( object sender, System.EventArgs e) { Application.Exit(); } Cuối cùng, ta sẽ gọi hàm khởi tạo của Form trong hàm Main(). Hàm Main() là điểm vào đầu tiên của Form. public static void Main( ) { Application.Run(new HandDrawnClass( )); } Sau đây là mã hoàn chỉnh của toàn bộ ứngdụng using System; using System.Windows.Forms; namespace ProgCSharp { public class HandDrawnClass : Form { // Label dùng hiển thị chuỗi ‘Hello World’ private System.Windows.Forms.Label lblOutput; // Button nhấn ‘Cancel’ private System.Windows.Forms.Button btnCancel; public HandDrawnClass( ) { // Tạo các đối tượng this.lblOutput = new System.Windows.Forms.Label ( ); this.btnCancel = new System.Windows.Forms.Button ( ); // Gán tiêu đề cho Form this.Text = "Hello World"; // Hiệu chỉnh Label lblOutput.Location = new System.Drawing.Point(16,24); lblOutput.Text = "Hello World!"; lblOutput.Size = new System.Drawing.Size (216, 24); // Hiệu chỉnh Button btnCancel.Location = newSystem.Drawing.Point(150,20); btnCancel.Size = new System.Drawing.Size (112, 32); btnCancel.Text = "&Cancel"; // Đăng ký trình quản lý sự kiện btnCancel.Click += new System.EventHandler (this.btnCancel_Click); //Thêm các điều khiển vào Form this.Controls.Add (this.btnCancel); this.Controls.Add (this.lblOutput); } // Bắt sự kiện nhấn Button protected void btnCancel_Click(object sender, EventArgs e) { Application.Exit( ); } // Chạy ứngdụng public static void Main() { Application.Run(new HandDrawnClass( )); } } } 3.2 Dùng kéo thả trong Windows Bên cạnh trình soạn mã, .NET còn cung cấp một bộ các công cụ kéo thả để làm việc trong môi trường pháttriển tích hợp IDE ( Intergrate Development Enviroment ), IDE cho phép kéo thả rồi tự động phát sinh mã tương ứng. Ta sẽ tạo lại ứngdụng trên bằng cách dùng bộ công cụ trong Visual Studio, ta mở Visual Studio và chọn ‘New Project’. Trong cửa sổ ‘New Project’, chọn loại dự án là Visual C# và kiểu ứngdụng là ‘Windows Applications’, đặt tên cho ứngdụng là ProgCSharpWindowsForm. Hình 3:Màn hình tạo ứngdụngWindows mới. Vs.NET sẽ tạo một ứngdụngWindows mới và đặt chúng vào IDE như hình dưới : Hình 3 Môi trường thiết kế kéo thả Phía bên trái của cửa hình trên là một bộ các công cụ (Toolbox) kéo thả dành cho các ứngdụngWindows Form, chính giữa là một Form được .NET tạo sẵn có tên Form1. Với bộ công cụ trên, ta có thể kéo và thả một Label hay Button trực tiếp vào Form, như hình sau : Với thanh công cụ Toolbox ở bên trái, ta có thể thêm các thành phần mới vào nó bằng các chọn View/Add Reference. Gó bên phải phía trên là cửa sổ duyệt toàn bộ các tập tin trong giải pháp (Solution, một giải pháp có một hay nhiều dự án con). Phía dưới là cửa sổ thuộc tính, hiển thị mọi thuộc tính về mục chọn hiện hành. Ta có thể gán giá trị chuỗi hiển thị hoặc thay đổi font cho Label một cách trực tiếp trong cửa sổ thuộc tính. Hình 5 Thay đổi Font trực tiếp bằng hội thoại Font Với IDE này, ta có thể kéo thả một Button và bắt sự kiện click của nó một cách dễ dàng, chỉ cần Nhấn đúp vào Button thì tự động .NET sẽ phát sinh ra các mã tương ứng trong trang mã của Form (Code-Behind page) như : khai báo, tạo Button và hàm bắt sự kiện click của Button. Hình 6 Sau khi click đúp nút Cancel Bây giờ, ta chỉ cần gõ thêm một dòng code nữa trong hàm bắt sự kiện của Button là ứngdụng có thể chạy được y như ứngdụng mà ta đã tạo bằng cách gõ code trong phần trên. Application.Exit( ); Sau đây là toàn bộ mã được phát sinh bởi IDE và dòng mã bạn mới gõ vào : using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace ProgCSharpWindowsForm [...]... được gọi bởi hàm khởi tạo của Form Mọi ứng dụngWindows Form đều phát sinh ra hàm này 3.3.Tạo ứng dụngWindows Form khác Trong ứngdụng trên ta đã thảo luận sơ qua về ứng dụngWindows Form, phần này ta sẽ tạo một ứng dụngWindows khác thực tế hơn Ứngdụng có tên là FileCopier, cho phép chép hay xóa một hoặc nhiều tập tin từ vị trí này sang vị trí khác Mục đích của ứngdụng là minh họa sâu hơn về các... toàn bộ ứngdụng : using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System .Windows. Forms; /// /// chép tập tin – ứngdụng minh họa cho WindowsForm /// namespace FileCopier { /// /// Form minh họa cho ứng dụngWindows Form /// public class Form1 : System .Windows. Forms .Form {...{ /// /// Summary description for Form1 /// public class Form1 : System .Windows. Forms .Form { private System .Windows. Forms.Label lblOutput; private System .Windows. Forms.Button btnCancel; /// /// Required designer variable /// private System.ComponentModel.Container components; public Form1 ( ) { InitializeComponent( ); } public override void Dispose(... liệu XML được tạo ra từ ứngdụng FileCopier trên : FileCopier Form demonstrating Windows Forms implementation Required designer variable ... trí này sang vị trí khác Mục đích của ứngdụng là minh họa sâu hơn về các kỹ năng lập trình C# và giúp người đọc hiểu thêm về namespace Windows. Forms Giao diện của ứngdụng sau khi hoàn chỉnh sẽ như sau: Hình 3-7 Giao diện người dùng của FileCopier Giao diện của ứngdụng gồm các thành phần sau : • Labels: Các tập tin nguồn (Source Files) and Thư múc đích (Target Directory) • Buttons: Bỏ các dấu chọn... this.Controls.AddRange(new System .Windows. Forms.Control[]{ this.btnCancel, this.lblOutput}); this.Name = "Form1 "; this.Text = "Form1 "; this.ResumeLayout(false); } private void btnCancel_Click(object sender, System.EventArgs e) { Application.Exit( ); } #endregion /// /// The main entry point for the application /// [STAThread] static void Main( ) { Application.Run(new Form1 ( )); } } } So với đoạn mã... if(components != null) components.Dispose( ); } #region WindowsForm Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor /// private void InitializeComponent( ) { this.lblOutput = new System .Windows. Forms.Label( ); this.btnCancel = new System .Windows. Forms.Button( ); this.SuspendLayout( ); // // lblOutput... Application.Run(new Form1 ( )); } } } So với đoạn mã ta gõ vào trong ứngdụng trước thì mã do IDE phát sinh không khác gì nhiều Các dòng chú thích được dùng để làm sưu liệu báo cáo cho dự án (mục này sẽ được thảo luận sau) /// /// Summary description for Form1 /// Các mã tạo và hiệu chỉnh đối tượng thay vì được đặt trực tiếp vào hàm khởi tạo của Form, thì ở đây IDE đặt chúng vào trong hàm InitializeComponent(),... chép hay xóa Ứngvới mỗi lần chọn sẽ phát sinh ra một số sự kiện tương ứng Ta sẽ bắt sự kiện AfterCheck của điều khiển cây Ta gõ vào các đoạn mã sau : tvwSource.AfterCheck +=new TreeViewEventHandler( this.tvwSource_AfterCheck ); Ta viết lệnh thực thi cho hàm bắt sự kiện AfterCheck có tên là tvwSource_AfterCheck, hàm này có hai tham số : đầu tiên là biến Sender chứa thông tin về đối tượng phát sinh ra... kỳ Điều khiển nào thì tự động Visual Studio NET sẽ phát sinh ra mã tương ứng để bắt sự kiện của Điều khiển đó và đặt con trỏ ( Cursor ) vào ngay tại hàm đó, ta nhấn đúp vào Button “Cancel” và bổ sung mã như sau : protected void btnCancel_Click( object sender, System.EventArgs e) { Application.Exit( ); } 3.3.2.Quản lý điều khiển TreeView Trong ứngdụng này, hai điều khiển TreeView hoạt động tương tự . của Form. Mọi ứng dụng Windows Form đều phát sinh ra hàm này. 3.3.Tạo ứng dụng Windows Form khác. Trong ứng dụng trên ta đã thảo luận sơ qua về ứng dụng Windows. Phát triển ứng dụng với Windows Form. 3.1 Tạo một Windows Form đơn giản Windows Form là công cụ dùng để tạo các ứng dụng Windows, nó mượn