Manchmal vermisse ich in solchen Situationen meine Jugend, als Access mein Gift der Wahl war, und ich konnte jedem Optionsfeld in einer Gruppe seinen eigenen Wert geben.
Mein Hack in C # besteht darin, das Tag zum Festlegen des Werts zu verwenden. Wenn ich eine Auswahl aus der Gruppe treffe, lese ich den Wert des Tags des ausgewählten Radiobutton. In diesem Beispiel ist directionGroup die Gruppe, in der ich vier fünf Optionsfelder mit "Keine" und "NE", "SE", "NW" und "SW" als Tags auf den anderen vier Radiobuttons habe.
Ich habe proaktiv eine Schaltfläche verwendet, um den Wert der aktivierten Schaltfläche zu erfassen, da das Zuweisen eines Ereignishandlers zu allen CHeckCHanged-Ereignissen aller Schaltflächen dazu führt, dass JEDE Schaltfläche ausgelöst wird, da durch Ändern einer Schaltfläche alle geändert werden. Der Wert des Absenders ist also immer der erste RadioButton in der Gruppe. Stattdessen verwende ich diese Methode, wenn ich herausfinden möchte, welche ausgewählt ist, mit den Werten, die ich in der Tag-Eigenschaft jedes RadioButton abrufen möchte.
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());
}
Zu Ihrer Information, ich habe dies getestet und in meiner Arbeit verwendet.
Joey