繁体   English   中英

如何为Windows窗体中的每个可能的枚举值创建一个复选框?

[英]How to create a checkbox for each possible enum value in Windows forms?

假设我们有一个enum Identifier {Name, Id, Number}并且我们希望为用户提供诸如对话框之类的消息,其中只包含每个可能的Identifier值和“确定”按钮的复选框。 在对话框确认中,获取List<Identifier> (如果未选中任何复选框,则为空)。 如何用winforms做这么简单的事情?

您可以使用以下方法在枚举中获取值数组:

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));
}

您可以对上述内容进行其他错误检查,但这就是要点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM