[Bài 01] - Thuộc tính, phương thức, sự kiện trong C# Winform



GIỚI THIỆU

Chào các bạn!

Hôm nay mình xin bắt đầu chuỗi bài hướng dẫn học lập trình Winform C# cơ bản kèm ví dụ cụ thể. Bài đầu tiên này mình xin phép giới thiệu với các bạn những thứ cơ bản nhất về Winform C#, và nó khác gì so với lập trình trên Console.
Chúng ta sẽ tìm hiểu 3 đặc điểm hướng đối tượng của nó





THUỘC TÍNH CỦA ĐỐI TƯỢNG

   Ở ngoài thực tế, thuộc tính là những đặc điểm của sự vật.
   Ví dụ: cô kia chân: dài, dáng: cao, da: trắng. Anh kia mũi: thấp, tóc: ngắn...v...v...
   Đối với Console App, thì thuộc tính là các biến kiểu private, nằm trong một Class và chúng ta hay dùng phương thức get - set để lấy giá trị cho nó. 
   Còn trong lập trình Winform C# thì thuộc tính là những đặc điểm - tính năng bên ngoài và bên trong của một đối tượng (Form, Control, Container,...).
   Dưới đây là bảng các thuộc tính giống nhau của các Control trong C#
Thuộc tính thường dùng trong C# - Winform
   
    Các bạn có thể thay đổi thuộc tính ở khung Properties trong lúc thiết kế Form, và cũng có thể thay đổi thuộc tính bằng code.

Ví dụ: một textBox cơ bản vừa được kéo ra từ Toolbox. Các bạn thực hiện các dòng code sau ở hàm dựng của Form (hàm này sẽ chạy đầu tiên khi Form load lên)
public YourForm()
{
     InitializeComponent();

     //Code thay đổi thuộc tính của textBox1
     textBox1.BackColor = Color.LightYellow;
     textBox1.Text = "Lập trình cuộc sống";
     textBox1.TextAlign = HorizontalAlignment.Center;
     textBox1.ForeColor = Color.Blue;
     
     //Code thay đổi thuộc tính button1
     button1.Text = "IceTea Việt";
     button1.BackColor = Color.LightGreen;
     button1.FlatStyle = FlatStyle.Flat;
     button1.Enabled = false;     
}

Kết quả sẽ là:


PHƯƠNG THỨC CỦA ĐỐI TƯỢNG

   Trong lập trình trên Console ta hay gọi một phương thức là "hàm". Nhưng nếu lập trình C# hướng đối tượng thì hàm đặt trong class được gọi là phương thức. Mỗi class dù là class thường hay là Form, hay bất cứ Control nào khác đều có phương thức riêng cho mình
   Chúng ta gọi (call) đến phương thức của nó, giống như là ra lệnh cho nó phải làm một hành động gì đó vậy. Cũng giông như chúng ta khi còn nhỏ ai cũng có phương thức là Học(), Ăn(), QuétNhà(),...vậy :D
Phương thức thường dùng trong C# - Winform


SỰ KIỆN CỦA CÁC ĐỐI TƯỢNG

   Sự kiện là gì?
   Ta cứ tưởng tượng như chúng ta nhảy, thì đó là sự kiện ghi nhận hành động nhảy. Con chim hót thì sự kiện là chim hót.
   Vậy trong winform C# theo đúng nghĩa đen nó, sự kiện là một hành động gì đó vừa được xảy ra. Ví dụ người dùng ấn vào một nút nào đó, thì đó là sự kiện Click, ấn phím nào đó thì là sự kiên KeyPress.

   Làm sao máy tính nhận biết được sự kiện?
   Nếu ở ngoài đời chúng ta nhìn bằng mắt, nghe bằng tai biết được sự kiện hành động đó đang diễn ra thì trong C# hỗ trợ cho chúng ta một bộ lắng nghe sự kiện EventHandler. Các bạn cứ hiểu đơn giản là nó sẽ dựa trên cơ chế ngắt của vi xử lý gửi và nhận các tín hiệu và trả về các phương thức cho bạn. Nếu tìm hiểu sâu ta sẽ đụng tới Delegate - thứ mà mình vẫn còn đang mơ hồ >.< Nếu sau này có điều kiện mình sẽ viết một bài sâu hơn để hướng dẫn các bạn với Event, Delegate và cách Custom sự kiện.
Các sự kiện thường dùng
    
    Vậy thì cần sự kiện để làm gì?
    Các bạn cứ tưởng tượng sự kiện như là một câu lệnh điều kiện if, nếu xảy ra sự kiện gì đó - thì ta sẽ xử lý để làm việc gì đó. Ví dụ như nếu Click chuột vào button đăng nhập trong game, thì nó sẽ xử lý kiểm tra tài khoản và mật khẩu, và sẽ xuất ra thông báo đăng nhập thành công chẳng hạn... Cứ lấy ví dụ bằng game cho dễ hình dung :D

    Sự kiện được khởi chạy khi nào?
    - Người dùng có thể khởi chạy các event bằng cách tương tác với chương trình của bạn. Ví dụ: Việc nhấp một button sẽ khởi chạy event Click của button
    - Các control có thể tự khởi chạy event riêng của mình. Ví dụ: control Timer sẽ kích hoạt event Tick của nó vào các khoảng thời gian đều đặn
    - Hệ điều hành (bất kỳ phiên bản nào của Windows) có thể khởi chạy các event
    - Bạn có thể khởi chạy các event bằng cách gọi chúng giống như gọi một phương thức 

    Làm cách nào để thêm một sự kiện cho Form hoặc control?
    Các bạn có thể thêm sự kiện bằng code, hoặc click đúp vào control muốn thêm để thêm sự kiện thường dùng nhất của nó, hoặc đúp chuột vào tên sự kiện cần thêm  trong khung sự kiện của ô Properties khi đang thiết kế form. Khi đó Visual Studio sẽ tự động generate code cho sự kiện đó vào <YourForm>.Designer.cs và gọi hàm đó vào class <YourForm> để các bạn thiết lập xử lý sự kiện
Thêm sự kiện bằng khung Properties

Vd: khi bạn đúp chuột vào sự kiện Click của button1 thì VS sẽ tự động tạo những đoạn code sau
// 
// Trong Yourform.Designer.cs
 
this.button1.Click += new System.EventHandler(this.button1_Click);

// Trong Class của YourForm nó sẽ gọi hàm để định nghĩa và xử lý cho sự kiện click trên

private void button1_Click(object sender, EventArgs e)
{
     //Các bạn sẽ cần gõ code xử lý sự kiện ở đây
}

Các bạn có thể thêm/xóa sự kiện bằng tay theo cú pháp
//

//Thêm vào Yourform.Designer.cs hay trong hàm dựng của Form đều được
this.Control.Sựkiện += new System.EventHandler(this.tên hàm sự kiện);


//và gọi hàm để định nghĩa cho sự kiện 
private void tên hàm sự kiện(object sender, XEventArgs e)
{
//Trong đó X có thế là Mouse, hoặc Graphics, hoặc có thể bỏ trống tùy loại sự kiện
}


//Xóa event vừa tạo
this.Control.Sựkiện -= new System.EventHandler(this.tên hàm sự kiện);

//

Hoặc các bạn cũng có thể gõ this.<control>.<Sự kiện> += rồi tab 2 lần để VS tự động generate sự kiện và hàm cho bạn nếu bạn ko biết rõ nó là EventArgs hay MouseEventArgs,.... Rất dễ đúng không các bạn :D

Cuối cùng mình xin gửi đến các bạn các đoạn code mẫu sau để đoán kết quả nó sau khi chạy nhé :D

//Trong Form.Designer.cs
private void InitializeComponent()
{
     this.textBox1 = new System.Windows.Forms.TextBox();
     this.button1 = new System.Windows.Forms.Button();
     this.SuspendLayout();
     // 
     // textBox1
     // 
     this.textBox1.Location = new System.Drawing.Point(156, 223);
     this.textBox1.Name = "textBox1";
     this.textBox1.Size = new System.Drawing.Size(183, 20);
     this.textBox1.TabIndex = 1;
     this.textBox1.BackColor = Color.LightYellow;
     this.textBox1.Text = "Lập trình cuộc sống";
     this.textBox1.TextAlign = HorizontalAlignment.Center;
     this.textBox1.Visible = false;
     // 
     // button1
     // 
     this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
     this.button1.Location = new System.Drawing.Point(210, 184);
     this.button1.Name = "button1";
     this.button1.Size = new System.Drawing.Size(75, 23);
     this.button1.TabIndex = 3;
     this.button1.Text = "TestButton";
     this.button1.UseVisualStyleBackColor = true;
     this.button1.Click += new System.EventHandler(this.button1_Click);
     // 
     // YourForm
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
     this.ClientSize = new System.Drawing.Size(625, 467);
     this.Controls.Add(this.button1);
     this.Controls.Add(this.textBox1);
     this.Name = "YourForm";
     this.Text = "Form1";
     this.ResumeLayout(false);
     this.PerformLayout();
}

private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button1;


//Trong Form Class của Form.cs
private void button1_Click(object sender, EventArgs e)
{
     MessageBox.Show("Cùng học MessageBox với IceTea Việt", "Thông báo");
}

Chúc các bạn học tốt, chào các bạn và hẹn gặp lại!


Post a Comment

[facebook][blogger]

Contact Form

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget