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

本文关键字:枚举 复选框 创建 Windows 窗体 | 更新日期: 2023-09-27 18:09:49

假设我们有一个enum Identifier {Name, Id, Number},我们想为用户提供一个类似对话框的消息,其中每个可能的Identifier值和Ok按钮只有复选框。在对话框确认得到一个List<Identifier>(如果没有复选框被选中则为空)。如何用winforms做这样简单的事情?

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

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

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

您可以在上面的基础上添加错误检查,但这是它的要点。