Các event xử lý radio button

   Chào các bạn! 
   Sau mấy ngày lười biếng thì hôm nay mình đã trở lại và ăn hại hơn xưa :D, phần vì ở là nghỉ hè nên lười, chỉ muốn chơi game và xem phim, phần vì mình vừa code xong game cờ Caro với con stupid A.I. Ai muốn chơi thử thì liên hệ mình nhé :D

GIỚI THIỆU


Hôm nay mình sẽ giới thiệu với các bạn 2 control đơn giản và cần thiết là RadioButtonCheckbox. Chúng ta hãy cùng xem có thể làm đc gì với nó nhé 

Các event xử lý radio button

RADIO BUTTON

     RadioButton cho phép người dùng chỉ được chọn một lựa chọn duy nhất trong các lựa chọn cùng 1 "nhóm". Có nghĩa là nếu 1 nhóm các RadioButton thì nếu bạn check một nút, thì tất cả các nút còn lại đều ở trạng thái unchecked. Giống như bảng chọn giới tính thì chỉ được chọn Nam hoặc Nữ, chứ làm sao mà có kiểu lai hóa giữa 2 cái như vậy đc =))

     Một RadioButton có thể hiển thị nội dung text, hình ảnh hoặc cả 2. Các thuộc tính của RadionButton cũng tương tự như các control khác. Nhưng nó có thêm một thuộc tính Checked để lưu trạng thái đã chọn hay chưa chọn của nút
     Để thay đổi trạng thái cho RadioButton ta dùng cú pháp sau:

tênRadioButton.Checked = true;

 Ta tiếp tục với ví dụ sau: Ta có một form như hình: 

Ta sẽ viết code cho mặc định là nút đầu tiên sẽ được check, và nếu mục nào đang được check, khi bấm vào button1 thì nó sẽ hiện nội dung của mục đó.

//Ta dùng sự kiện FormLoad để mặc định cho nút đầu tiên được chọn
private void Form1_Load(object sender, EventArgs e)
{
       radioButton1.Checked = true;
}

//Sau đó xử lý sự kiện click cho Button1
private void button1_Click(object sender, EventArgs e)
{
       if (radioButton1.Checked == true)
       {
           MessageBox.Show("Bạn vừa chọn RadioButton 1 với nội dung là: " + radioButton1.Text);
           return;
       }
       else if (radioButton2.Checked == true)
       {
           MessageBox.Show("Bạn vừa chọn RadioButton 2 với nội dung là: " + radioButton2.Text);
           return;
       }
       else if (radioButton3.Checked == true)
       {
           MessageBox.Show("Bạn vừa chọn RadioButton 3 với nội dung là: " + radioButton3.Text);
           return;
       }
       else if (radioButton4.Checked == true)
       {
           MessageBox.Show("Bạn vừa chọn RadioButton 4 với nội dung là: " + radioButton4.Text);
           return;
       }
}

Và kết quả sẽ là:

CHECKBOX

     Không như RadioButtons chỉ có thể chọn một mục cho cả nhóm và khi đã chọn rồi thì không thể deselect (hủy chọn) được, thì Checkbox ta có thể chọn nhiều mục khác nhau cùng lúc và có thể chọn và hủy tùy ý. Checkbox thường được sử dụng để tạo các sự lựa chọn cho người dùng. Một ví dụ kinh điển là khi đăng kí tài khoản hay cài đặt phần mềm ta hay chọn vào "Tôi đồng ý với điều khoản trên..." :D
     Các thuộc tính cơ bản của Checkbox cũng giống tương tự như các Control cơ bản khác, tuy nhiên có thêm thuộc tính Checked, CheckState ThreeState

Các thuộc tính cơ bản của CheckBox

     THREE STATE CỦA CHECKBOX: Ta nói thêm về ThreeState. Khi đã bật lựa chọn này thì người dùng có thể tự do lựa chọn 3 lựa chọn trên một CheckBox là Checked, UnChecked và Indeterminate. Nếu ThreeState không được bật thì ta chỉ có thể cho Checkbox vào trạng thái Indeterminate bằng code, không trưc tiếp trên Form được. Tham khảo thêm trên MSDN

     Về sự kiện, ta có sự kiện hay dùng nhất của CheckBox đó là CheckedChangedCheckStateChanged. Ví dụ với đoạn code sau:

//Sự kiện CheckedChanged chỉ theo dõi được hai trạng thái???
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
       checkBox4.ThreeState = true;
       if(checkBox4.CheckState == CheckState.Checked)
       {
            MessageBox.Show(checkBox4.Text + " đang được chọn");
       }
       else if(checkBox4.CheckState == CheckState.Unchecked)
       {
            MessageBox.Show(checkBox4.Text + " không được chọn");
       }
       else if(checkBox4.CheckState == CheckState.Indeterminate)
       {
            MessageBox.Show(checkBox4.Text + " đang ở trạng thái Indeterminate");
       }
}

//Sự kiện CheckStateChanged theo dõi được cả ba trạng thái, bao gồm cả Indeterminate???
private void checkBox5_CheckStateChanged(object sender, EventArgs e)
{
       checkBox5.ThreeState = true;
       if (checkBox5.CheckState == CheckState.Checked)
       {
           MessageBox.Show(checkBox5.Text + " đang được chọn");
       }
       else if (checkBox5.CheckState == CheckState.Unchecked)
       {
           MessageBox.Show(checkBox5.Text + " không được chọn");
       }
       else if (checkBox5.CheckState == CheckState.Indeterminate)
       {
           MessageBox.Show(checkBox5.Text + " đang ở trạng thái Indeterminate");
       }
}

Và kết quả sẽ là khi ta chọn checkbox IceTea Việt thành Indeterminate thì nó sẽ không "lắng nghe" được và không xuât thông báo, còn ở checkbox iceteaviet.blogspot.com thì nó hoàn thành tốt cả ba trạng thái trong sự kiện


     Ngoài các sự kiện trên bạn cũng có thể kết hợp các control đã học để tùy biến cho các sự kiện của Checkbox và RadioButton. 

TỔNG KẾT

   RadioButton và Checkbox trong C# Winforms là những control cho phép người dùng xác định những chọn lựa của mình thông qua những gợi ý, đề xuất từ chương trình. Là những control hữu dụng không thể thiếu trong các chương trình hiện nay

     Bài này đến đây là kết thúc rồi, các bạn cũng đã học gần hết các Control cơ bản rồi đó, sau khi học đầy đủ chúng ta lại làm đồ án thôi :D :D Nhớ làm bài Pet Project #1 của mình tại đây nhé: http://iceteaviet.blogspot.com/2015/07/winform-c-can-banproject-1-phan-mem.html

     Chào các bạn, chúc các bạn học tốt!