2013-05-06 53 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

相關問題