如何设置comboBox.selecteditem

时间:2009-04-06 22:19:04

标签: c#

我有:

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

现在工作真的很好。

那是什么意思呢?有人可以解释一下。

3 个答案:

答案 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;

会抛出异常,因为句柄不可用。它稍后(在您的事件处理程序中)工作,因为句柄可用。