如何将 CheckedListBox 绑定到枚举?

Sip*_*ipo 3 c# enums checkedlistbox winforms

我有一个枚举:

enum Presidents
{
    Clinton,
    Bush,
    Obama,
    Trump
}
Run Code Online (Sandbox Code Playgroud)

我也有一个CheckedListBox。我希望它由枚举值组成。我怎样才能做到这一点?


注:一个CheckedListBox没有一个CheckBoxList。请不要参考这个问题。

Ren*_*ogt 6

您可以像这样枚举枚举值的名称:

Enum.GetNames(typeof(Presidents));
Run Code Online (Sandbox Code Playgroud)

或值通过

Enum.GetValues(typeof(Presidents));
Run Code Online (Sandbox Code Playgroud)

有了这个,您可以填写以下DataSource内容CheckedListBox

checkedListBox1.DataSource = Enum.GetValues(typeof(Presidents));
Run Code Online (Sandbox Code Playgroud)

或直接填写Items集合:

checkedListBox1.Items.AddRange(Enum.GetValues(typeof(Presidents));
Run Code Online (Sandbox Code Playgroud)

我建议使用值而不是名称。它们以名称显示,但稍后您可以直接使用它们,例如

Presidents firstChecked = (Presidents)checkedListBox1.CheckedItems[0];
Run Code Online (Sandbox Code Playgroud)

无需再次解析它们。

请注意,DataSource此类型的属性不可浏览(在设计器的属性窗口中可见)。

  • 问题是我是否应该使用它**尽管**语言设计者已经隐藏了它。 (2认同)
  • 我的猜测是设计者无法弄清楚如何将控件的“复选标记”部分与数据源绑定。更容易隐藏它并忘记它。 (2认同)