我正在与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被检查或者有更好的方法?
答案 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;
}
}