我在WinForm中使用組合框,但是當我選中組合框中的任何項目時,選定的項目背景顏色爲藍色。我想刪除這個藍色的背景顏色(特別是在表單加載時,試圖將焦點設置到窗體中的其他控件,但組合高亮顯示不被刪除),但是應該選擇項目。在ComboBox中停止選定項目的顏色高亮?
有人可以幫忙嗎?
我在WinForm中使用組合框,但是當我選中組合框中的任何項目時,選定的項目背景顏色爲藍色。我想刪除這個藍色的背景顏色(特別是在表單加載時,試圖將焦點設置到窗體中的其他控件,但組合高亮顯示不被刪除),但是應該選擇項目。在ComboBox中停止選定項目的顏色高亮?
有人可以幫忙嗎?
看來,唯一的方法是通過繼承組合框控件。
這裏是有人做這樣的例子:
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/e234c4a7-0cf7-4284-a072-8152f7593002/
有可能是網絡來指導你更多。
給定鏈接解釋了鼠標懸停在組合框項目上時如何顯示工具提示。這不是問題的答案。 – Dialecticus
我發現了一些在this site
創建一個定時器並在SelectedIndexChanged事件啓用它,並且在計時器只添加ComboBox1.Select(0,0)
這應該取消選擇部分,然後關閉計時器。找出其他的切入點在哪裏,你可以Enable
計時器再次
代碼片斷
private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
//Get the item selected in the combobox
ComboBox cbx = (ComboBox)sender;
int idx = cbx.SelectedIndex;
string s1 = cbx.SelectedItem.ToString();
// Enable the time so that the Highlight can be removed
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
// Remove the Highlight
comboBox1.Select(0, 0);
// Disable timer
timer1.Enabled = false;
}
comboBox1.Select(0,0) - 由於combobox是'dropdownlist'而不起作用,所以不允許編輯文本.., – Dhana
@Dhana然後設置'comboBox1.SelectionLength = 0'工作嗎? – V4Vendetta
有你
private void myComboBox_Paint(object sender, PaintEventArgs e)
{
myComboBoxComboBox.SelectionLength = 0;
}
一個簡單的解決方案希望它能幫助:)
會不會取消選擇? – elyashiv
我不是一個大的VB用戶,只能在Excel中使用它,但在我的ComboBox中進行選擇時也遇到了這個問題。我終於找到了擺脫藍色文本突出顯示的方法。
我在用戶窗體上有一個組合框。通過選擇組合框並查看屬性,只需將「HideSelection」更改爲True即可。你也可以爲它的代碼: ComboBox1.HideSelection =真
這是正確的解決方案。儘管你的答案是關於VBA的,但對於使用C#和VB.NET的WinForms也是一樣的。您需要將「HideSelection」屬性設置爲「true」。奇怪,雖然;這應該是默認設置。 –
@Cody Gray - 我無法在Windows窗體中找到ComboBox的HideSelection屬性。它存在於TextBoxBase和從它繼承的控件,但ComboBox不。這是一種恥辱,因爲我真的很喜歡它! (我正在使用Visual Studio 2013與.NET 4.5) – JonP
@jonp嗯,我不知道我幾年前寫評論時的想法。據推測,它當時對我有效。我想也許ComboBox只是隱藏了基類方法,但是快速查看Reference Source表明它甚至沒有與TextBox相同的層次結構。它實際上是從繼承自Control的ListControl繼承而來的。所以沒有隱藏的屬性設置。也許你可以得到底層的TextBox控件,儘管.NET沒有提供任何管理方式。你將不得不使用P/Invoke來獲取句柄。 ... –
爲了解決我已經試過幾乎所有的東西是一樣的:
DropdownStyle
屬性DROPDOWNLISTthis.BeginInvoke(new Action(() => { comboBox1.Select(0, 0); }));
combobox1.SelectionLength = 0;
comboBox.TabIndex
SendKeys.Send("{ESC}");
因爲它不是重新承擔責任的解決方案沒有什麼幫助。也許是因爲我的組合框內沒有文字,只有圖像。 唯一的穩定和工作的解決辦法是在另一個Label控件移動焦點:
label.Focus();
你也可以隱藏標籤。
我遇到了同樣的問題,在找不到工作解決方案後,我的想法與@Vadim K相同
這是一個簡短的例子。
第一步是改變UI_Load事件中的焦點。
Private Sub UI_Load(sender As System.Object, e As System.EventArgs) Handles Me.Load
Me.lblTitle.Focus()
End Sub
下一步要處理的情況下,當有人選擇一個新的值
爲Private Sub comboExportDates_SelectedIndexChanged(sender As Object, e As EventArgs) Handles comboExportDates.SelectedIndexChanged
Me.lblTitle.Focus()
End Sub
工作正常,我
敢肯定你可以選擇的指數正好被設置爲-1,但它一直一會兒。 – asawyer
,但應選擇項目... – Dhana
你在窗口上使用特殊的顏色主題?這不應該發生在一個共同的組合上。嘗試刪除該組合並添加一個新組合。 @asawyer,將清除組合,但這不是OP所要求的;) – gbianchi