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