1

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

4

1 回答 1

6

您可以通过以下方式在枚举中获取一组值:

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

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

于 2013-04-17T23:20:58.637 回答