Chương 8 Ứng dụng Windows với WindowsForm
8.1.2. Dùng kéo thả trong Visual Studio NET
làm việc trong môi trường phát triể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 ứng dụ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 ứng dụng là ‘Windows Applications’, đặt tên cho ứng dụng là ProgCSharpWindowsForm.
Hình 8-2 Màn hình tạo ứng dụng Windows mới.
Vs.NET sẽ tạo một ứng dụng Windows mới và đặt chúng vào IDE như hình dưới:
Hình 8-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 ứng dụng Windows 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 :
Hình 8-4 Môi trường phát triển Windows Form.
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. Ô bên phải 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 (Properties), 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.
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 8-6 Sau khi nhấn đúp vào 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à ứng dụng có thể chạy được y như ứng dụ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 { /// <summary>
/// Summary description for Form1. /// </summary>
public class Form1: System.Windows.Forms.Form {
private System.Windows.Forms.Label lblOutput; private System.Windows.Forms.Button btnCancel; /// <summary>
/// </summary>
private System.ComponentModel.Container components; public Form1( )
{
InitializeComponent( ); }
public override void Dispose( ) {
base.Dispose( ); if(components != null) components.Dispose( ); }
#region Windows Form Designer generated code /// <summary>
/// Required method for Designer support - do not modify /// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent( ) {
this.lblOutput = new System.Windows.Forms.Label( ); this.btnCancel = new System.Windows.Forms.Button( ); this.SuspendLayout( );
//
// lblOutput //
this.lblOutput.Font = new System.Drawing.Font("Arial", 15.75F, System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point,((System.Byte)(0))); this.lblOutput.Location = new System.Drawing.Point(24, 16); this.lblOutput.Name = "lblOutput";
this.lblOutput.Size = new System.Drawing.Size(136, 48); this.lblOutput.TabIndex = 0;
this.lblOutput.Text = "Hello World"; // btnCancel
this.btnCancel.Location = new System.Drawing.Point(192, 208); this.btnCancel.Name = "btnCancel";
this.btnCancel.TabIndex = 1; this.btnCancel.Text = "Cancel";
this.btnCancel.Click += new System.EventHandler( this.btnCancel_Click ); this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
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 /// <summary>
/// The main entry point for the application. /// </summary>
[STAThread] static void Main( ) {
Application.Run(new Form1( )); }
} }
So với đoạn mã ta gõ vào trong ứng dụ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>
/// Summary description for Form1. /// </summary>
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(), Sau
đó hàm này được gọi bởi hàm khởi tạo của Form. Mọi ứng dụng Windows Form
đều phát sinh ra hàm này.