C# 如何在Windows窗体中为每个可能的枚举值创建复选框?
假设我们有一个枚举标识符{Name,Id,Number},我们希望为用户提供一个类似消息的对话框,其中只包含每个可能的标识符值的复选框和Ok按钮。对话框确认时,如果未选中任何复选框,则获取Listempty。如何使用winforms完成如此简单的操作?您可以通过以下方法在枚举中获得一个值数组:C# 如何在Windows窗体中为每个可能的枚举值创建复选框?,c#,.net,winforms,reflection,dialog,C#,.net,Winforms,Reflection,Dialog,假设我们有一个枚举标识符{Name,Id,Number},我们希望为用户提供一个类似消息的对话框,其中只包含每个可能的标识符值的复选框和Ok按钮。对话框确认时,如果未选中任何复选框,则获取Listempty。如何使用winforms完成如此简单的操作?您可以通过以下方法在枚举中获得一个值数组: var valuesArray = Enum.GetValues(typeof (Identifier)); 要显示复选框,请执行以下操作: foreach (var val in valuesArra
var valuesArray = Enum.GetValues(typeof (Identifier));
要显示复选框,请执行以下操作:
foreach (var val in valuesArray)
{
//create checkbox
var cb = new CheckBox();
cb.Name = string.Format("cb_{0}", val);
cb.Text = val; //set your properties
//add to your form controls
this.Controls.Add(cb);
}
要获取列表,只需获取表单上的所有复选框:
var checkedIdentifiers = new List<Identifier>();
foreach (var val in valuesArray)
{
//find checkbox
var cb = this.Controls[string.Format("cb_{0}", val)];
if (cb != null && cb.Checked)
checkedIdentifiers.Add((Identifier)Enum.Parse(typeof(Identifier), val));
}
您可以对上述内容进行额外的错误检查,但这是其要点。您可以通过以下方法获得枚举中的值数组:
var valuesArray = Enum.GetValues(typeof (Identifier));
要显示复选框,请执行以下操作:
foreach (var val in valuesArray)
{
//create checkbox
var cb = new CheckBox();
cb.Name = string.Format("cb_{0}", val);
cb.Text = val; //set your properties
//add to your form controls
this.Controls.Add(cb);
}
要获取列表,只需获取表单上的所有复选框:
var checkedIdentifiers = new List<Identifier>();
foreach (var val in valuesArray)
{
//find checkbox
var cb = this.Controls[string.Format("cb_{0}", val)];
if (cb != null && cb.Checked)
checkedIdentifiers.Add((Identifier)Enum.Parse(typeof(Identifier), val));
}
您可以对上述内容进行额外的错误检查,但这就是它的要点。到目前为止您尝试了什么?你肯定不需要思考,所以也许可以去掉这个标签?@LinusCaldwell也许我在放屁,但如果没有思考,你怎么做?除了手动创建每个复选框之外,我的意思是。@Blorgbeard,嗯,也许我错了,但如果你像RCLENT的回答那样做,我不会称之为反射,是吗?@LinusCaldwell不,我是brainfart。你到目前为止做了什么?你肯定不需要思考,所以也许可以去掉这个标签?@LinusCaldwell也许我在放屁,但如果没有思考,你怎么做?除了手动创建每个复选框之外,我的意思是。@Blorgbeard,嗯,也许我错了,但如果你像RCLENT的回答那样做,我不会称之为反射,是吗?@LinusCaldwell不,我是brainfart。