识别使用枚举作为值来检查哪个单选按钮,winforms

时间:2013-07-18 06:03:44

标签: c# .net winforms

我正在与winforms挣扎。在winform中我有groupbox包裹3 radio buttons。我使用设计视图添加它们,并在内部构造函数中将每个按钮标记为相应的枚举值,如

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被检查或者有更好的方法?

3 个答案:

答案 0 :(得分:6)

您可以通过以下方式获取UserChoiceEnum:

RadioButton choice = grpBox1.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Checked);
UserChoiceEnum userChoice = (UserChoiceEnum)choice.Tag;

答案 1 :(得分:2)

如果您设置Tag,只需在需要时即可将其恢复。请注意,您需要将其强制转换为原始类型。类似的东西:

var choiceAsEnum = (UserChoiceEnum)choice.Tag;

答案 2 :(得分: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;
      }
}