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

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

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

  ask by myWallJSON translate from so

未解决问题?本站智能推荐: