2

我正在努力使用 WinForms。我有一个GroupBox包装三个RadioButtons 的。我使用设计视图添加它们,并在构造函数中将每个按钮标记为相应的枚举值,例如

public MyApp()
{
   radioBtnBasic.Tag = UserChoiceEnum.Basic;
   radioBtnLite.Tag = UserChoiceEnum.Lite;
   radioBtnStandard.Tag = UserChoiceEnum.Standard;
}

在我的类中,我有Dictionary使用此枚举作为键的类型的属性属性,因此我希望当用户单击 winform 按钮时识别选中了哪个单选按钮并将其分配给该字典。

我找到了如何获取选中的选项

var choice = grpBox1.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Checked);

我需要使用 switch 语句来识别检查了哪个 Enum 还是有更好的方法?

4

3 回答 3

6

您通过以下方式获得 UserChoiceEnum:

RadioButton choice = grpBox1.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Checked);
UserChoiceEnum userChoice = (UserChoiceEnum)choice.Tag;
于 2013-07-18T06:11:27.040 回答
2

如果你设置Tag了,你可以在需要的时候简单地取回它。请注意,您需要将其转换为原始类型。就像是:

var choiceAsEnum = (UserChoiceEnum)choice.Tag;
于 2013-07-18T06:08:23.647 回答
0

创建枚举:

public enum SearchType
{
    ReferenceData = 0,
    Trade = 1,
}

然后使用控制SelectedIndexChanged事件radioGroup

private void RadioTypes_SelectedIndexChanged(object sender, EventArgs e)
{
      if (this.RadioTypes.SelectedIndex < 0) return;
      SearchType n = (SearchType)this.RadioTypes.SelectedIndex;

      switch (n)
      {
           case SearchType.ReferenceData:
           break;

           case SearchType.Trade:
           break;
      }
}
于 2019-09-20T11:35:45.477 回答