2017-06-26 62 views
0

我使用ComboBoxDropDown顯示可以選擇的項目數。我也使用默認文本「選擇項目」。除了我從列表中選擇一個項目後,我可以選擇文本並將其刪除(使用退格鍵),以便所選項目的區域爲空白(請參閱image),這一工作完全可以工作。下拉式(列表)組合框控件字段選項C#

我想要防止這種情況發生,或者在不可能的情況下再次顯示默認文本。後者目前無法使用,所以我嘗試了DropDownList,但整個列表的背景變成灰色。如果我在DrawMode中選擇OwnerDrawFixedOwnerDrawVariable,背景會再次變成白色,但字體顏色也會變成白色(而不是黑色)。

我發現我必須使用DrawItem來更改佈局,但即使這樣也行不通。我只是想要與我指定的DropDown相同的樣式。有誰知道如何做到這一點或從哪裏找到已經得到解答的類似問題?

+0

您是否在本網站上搜索過可能會給您答案的其他問題?另外,如果你使用C#標籤,更多的人會看到這個問題。只需點擊問題中的編輯鏈接,然後添加標籤(頁面底部的文本字段)。 – ItamarG3

+0

我一直在尋找2天,但我無法找到正確的關鍵詞來找到答案,並且使用各種DrawMode和DrawItem選項也不起作用。這似乎是一件很容易的事情,但我根本找不到它。 – 10a

回答

0

建議的解決方案並沒有這樣的伎倆,但我找到了一個解決辦法,以最初的問題,這是ComboBox文本的手動刪除,所以我就放在這裏,以防別人有相同問題。當使用

MyComboBox_TextChanged(object sender, EventArgs e) 

我可以自己設置限制:如果文本是空白的,它應該顯示默認文本。如果輸入的文本等於ComboBox中的某個項目,則應將selectedItem設置爲與輸入的文本相同。

我還包括GotFocusLeaveEventHandlers

0

這樣的事情呢? 您也可以嘗試將DropDownStyle設置爲DropDownList和FlatStyle爲Flat。這給你一個稍微不同的結果。

private void InitialiseCombo(ComboBox combo) 
{ 
    combo.Items.Clear(); 
    combo.Items.AddRange(new object[] { 3391200121, 3391200122 }); 
    combo.DropDownStyle = ComboBoxStyle.DropDown; 
    combo.Text = "Select Item"; 
    combo.KeyPress += combo_KeyPress; 
} 

void combo_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    e.Handled = true; 
} 
+0

我沒有完全工作,但謝謝反正。我發現了一個解決方案,解決了我的特定問題。 – 10a

+0

好聽!我一直處於相同的位置,可能會令你感到沮喪,完全按照你想要的方式獲得這些東西! –