Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在OnLoad方法的WinForms组合框中设置SelectedIndex_C#_Winforms_Combobox - Fatal编程技术网

C# 在OnLoad方法的WinForms组合框中设置SelectedIndex

C# 在OnLoad方法的WinForms组合框中设置SelectedIndex,c#,winforms,combobox,C#,Winforms,Combobox,如果我在OnLoad方法中设置组合框的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; } 如果我使用sh

如果我在
OnLoad
方法中设置组合框的
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;
}

如果我使用shown上的
方法设置SelectedIndex,它将按预期工作:

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


为什么会发生这种情况?我如何避免这种行为?特别是在Usercontrol内部,没有可以使用的OnShown方法。因此,我的解决方法无法与custum UserControl一起使用。

如果文本被选中,请尝试将焦点返回到表单


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

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


TextBox1.Select()

通过将DropDownStyle属性设置为:dropdownlist,您可以将组合框更改为dropdownlist。

只需在OnLoad方法中的另一个文本框上调用
Focus
。文本仍有标记。我已更正了我的答案。您可以使用
TextBox1.Select()。在我的特殊情况下(我确实想把焦点放在另一个文本框上),它应该可以工作,但并不总是合适的。有时没有其他的控制权可以跳到。但是我还是接受了你的答案也可以避免此问题。但至少应该有一些控件来避免这种选择的可见性。像
TextBox1.TabIndex=1将dropdownstyle更改为:dropdownlist这会在UI中添加大量的chrome,这是客户根本不喜欢的。这也是我的第一个猜测。你可以自己设置颜色,以符合你的需要。