Bazen böyle durumlarda gençliğimi özlüyorum, Access seçim zehrim iken ve bir gruptaki her radyo düğmesine kendi değerini verebiliyordum.
C #'daki hack'im, değeri ayarlamak için etiketi kullanmaktır ve gruptan bir seçim yaptığımda, seçilen radyo düğmesinin etiketinin değerini okurum. Bu örnekte, directionGroup , diğer dört radyo düğmesindeki etiketler olarak "Yok" ve "NE", "SE", "NW" ve "SW" olan dört beş radyo düğmesine sahip olduğum gruptur.
İşaretlenen düğmenin değerini yakalamak için proaktif olarak bir düğme kullandım, çünkü tüm düğmelerin CHeckCHanged olayına bir olay işleyicisi atamak EACH düğmesinin ateşlenmesine neden oluyor çünkü birini değiştirmek hepsini değiştiriyor. Dolayısıyla gönderenin değeri her zaman gruptaki ilk RadioButton'dur. Bunun yerine, her RadioButton öğesinin Tag özelliğinde almak istediğim değerlerle hangisinin seçildiğini bulmam gerektiğinde bu yöntemi kullanıyorum.
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());
}
Bilginize, bunu işimde test ettim ve kullandım.
Joey