Đôi khi trong những tình huống như thế này, tôi nhớ tuổi trẻ của mình, khi Access là lựa chọn độc nhất của tôi và tôi có thể cho mỗi nút radio trong một nhóm giá trị riêng của nó.
Bí quyết của tôi trong C # là sử dụng thẻ để đặt giá trị và khi tôi thực hiện lựa chọn từ nhóm, tôi đọc giá trị của thẻ của nút radio đã chọn. Trong ví dụ này, directionGroup là nhóm mà tôi có bốn năm nút radio với "None" và "NE", "SE", "NW" và "SW" là các thẻ trên bốn nút radio còn lại.
Tôi đã chủ động sử dụng một nút để nắm bắt giá trị của nút đã chọn, bởi vì việc gán một trình xử lý sự kiện cho tất cả các sự kiện CHeckCHanged của các nút khiến MỖI nút kích hoạt, vì thay đổi một nút sẽ thay đổi tất cả. Vì vậy, giá trị của người gửi luôn là RadioButton đầu tiên trong nhóm. Thay vào đó, tôi sử dụng phương pháp này khi tôi cần tìm hiểu cái nào được chọn, với các giá trị tôi muốn truy xuất trong thuộc tính Thẻ của mỗi RadioButton.
private void ShowSelectedRadioButton()
{
List<RadioButton> buttons = new List<RadioButton>();
string selectedTag = "No selection";
foreach (Control c in directionGroup.Controls)
{
if (c.GetType() == typeof(RadioButton))
{
buttons.Add((RadioButton)c);
}
}
var selectedRb = (from rb in buttons where rb.Checked == true select rb).FirstOrDefault();
if (selectedRb!=null)
{
selectedTag = selectedRb.Tag.ToString();
}
FormattableString result = $"Selected Radio button tag ={selectedTag}";
MessageBox.Show(result.ToString());
}
FYI, tôi đã thử nghiệm và sử dụng điều này trong công việc của mình.
Joey