在OnLoad方法中的WinForms ComboBox中设置SelectedIndex

时间:2013-05-06 10:56:29

标签: c# winforms combobox

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

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

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

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。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果您不想focus组合框只需将焦点更改为其他控件。

喜欢

TextBox1.Select();

答案 2 :(得分:0)

您可以通过将DropDownStyle属性设置为:DropDownList来将组合框更改为下拉列表。