2013-05-06 51 views
0

如果我在OnLoad方法中设置组合框的SelectedIndex,则组合框内的文本也会被选中。使用OnLoad方法在WinForms组合框中设置SelectedIndex

protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 
    comboBox.Items.Add("Zero"); 
    comboBox.Items.Add("One"); 
    comboBox.Items.Add("Two"); 

    comboBox.SelectedIndex = 2; 
} 

Text inside ComboBox is selected when Index is set inside OnLoad

如果我使用了设置的SelectedIndex它按预期工作的OnShown方法:

protected override void OnShown(EventArgs e) 
{ 
    base.OnShown(e); 
    comboBox.SelectedIndex = 2; 
} 

Text inside Combobox is not selected when Index is set inside OnShown

为什么会出现这种情况,我怎么能避免的行为?特别是在Usercontrol内部,没有可以使用的OnShown方法。因此,我的解决方法不适用于Custum UserControl。

+0

将下拉样式更改为:dropdownlist – Max 2013-05-06 11:39:17

回答

0

如果你不想focus组合框只是改变焦点到其他控制。 DropDownList的:

TextBox1.Select();

+0

只需在OnLoad方法中调用另一个TextBox上的Focus对象即可。文本仍被标记。 – Marius 2013-05-06 11:13:56

+0

我纠正了我的答案。你可以使用'TextBox1.Select();'。它应该工作。 – RajeshKdev 2013-05-06 11:26:32

+0

在我的特殊情况下(我确实希望把焦点放在另一个文本框上),但它并不总是合适的。有时候没有更多的控制可以跳转到。但我仍然接受你的答案。 – Marius 2013-05-06 12:31:29

0

尝试将焦点返回给您的表单,如果困扰您的是该文本被选中。

但是总的来说,人们通常不希望组合框选项实际上是可编辑的,这也会阻止您的情况发生。

0

你可以通过DropDownStyle属性设置为组合框更改为下拉列表。

+0

这会给用户界面增加沉重的铬,客户根本不喜欢。也是我的第一个猜测。 – Marius 2013-05-06 11:48:47

+0

您可以随时自行设定颜色,以符合您的需求。 – Max 2013-05-06 11:49:21

相关问题