我有:
ComboBox.DataSource = System.Enum.GetValues(typeof(ImageLayout));
但如何将ComboBox.SelectedItem
设置为ImageLayout
值?
我试过..
LayOutCB.SelectedItem = (int)ImageLayout.Center;
但是我得到了一个例外
<小时/>
最初我试图在SelectedItem
的构造函数中设置UserControl
。
我添加了事件处理程序
this.Load += new EventHandler(PageSettings_Load);
然后在那里设置combobox.SelectedItem。
void PageSettings_Load(object sender, EventArgs e)
{
LayOutCB.SelectedItem = ImageLayout.Center;
}
现在工作真的很好。
那是什么意思呢?有人可以解释一下。
答案 0 :(得分:1)
你没试过吗?
ComboBox.SelectedItem = ImageLayout.Center
它对我来说非常好。
<小时/>
关于您的更新,我相信您在调用SelectedItem
之前设置了InitializeComponent()
并且未创建组合框但仍然提供了对象引用异常(该框已定义但未分配。 )
答案 1 :(得分:0)
尝试这样的事情:
ComboBox.SelectedItem = (int)ImageLayout.Foo;
将int
替换为枚举的基础类型。老实说,它可能只是在没有演员的情况下工作,但我现在不在csc.exe
附近。
答案 2 :(得分:0)
Windows.Forms中的ComboBox
控件是基础Windows控件周围的包装器。这是一种常见的模式 - 大多数Windows.Forms控件都是这种包装器。
ControlBox的某些属性(如SelectedItem)在创建基础Windows 句柄之后的之前无法设置。通常,在首次显示控件时会发生句柄创建。
在用户控件的构造函数中,此代码:
LayOutCB.SelectedItem = (int)ImageLayout.Center;
会抛出异常,因为句柄不可用。它稍后(在您的事件处理程序中)工作,因为句柄可用。