Kadang-kadang dalam situasi seperti ini saya merindukan masa muda saya, ketika Access adalah racun pilihan saya, dan saya dapat memberikan nilai tersendiri pada setiap tombol radio dalam grup.
Retasan saya di C # adalah menggunakan tag untuk mengatur nilainya, dan ketika saya membuat pilihan dari grup, saya membaca nilai tag dari radiobutton yang dipilih. Dalam contoh ini, directionGroup adalah grup di mana saya memiliki empat lima tombol radio dengan "None" dan "NE", "SE", "NW" dan "SW" sebagai tag pada empat radiobuttons lainnya.
Saya secara proaktif menggunakan tombol untuk menangkap nilai dari tombol yang dicentang, karena menugaskan satu event handler ke semua event tombol 'CHeckCHanged' menyebabkan tombol SETIAP menyala, karena mengubah satu mengubah semuanya. Jadi nilai pengirim selalu menjadi RadioButton pertama di grup. Sebagai gantinya, saya menggunakan metode ini ketika saya perlu mencari tahu mana yang dipilih, dengan nilai yang ingin saya ambil di properti Tag dari setiap 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, saya telah menguji dan menggunakan ini dalam pekerjaan saya.
Joey