停止ComboBox中所选项目的颜色突出显示?

时间:2011-10-20 12:20:10

标签: c# .net winforms combobox

我在WinForm中使用组合框但是当我在组合框中选择任何项目时,所选项目背景颜色为蓝色。我想删除这种蓝色背景颜色(特别是在表单加载,尝试将焦点设置为窗体中的其他控件,但组合高亮不删除)但应选择项目。

有人可以帮忙解决这个问题吗?

6 个答案:

答案 0 :(得分:3)

似乎唯一的方法是通过继承组合框控件。

以下是有人这样做的例子:

http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/e234c4a7-0cf7-4284-a072-8152f7593002/

网上可能有更多内容可以指导您。

答案 1 :(得分:2)

我发现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;
}

答案 2 :(得分:2)

我不是一个大的VB用户,只能在Excel中使用它,但在我的ComboBox中进行选择时也遇到了这个问题。我终于找到了摆脱蓝色文字突出显示的方法。

我在UserForm上有一个ComboBox。通过选择ComboBox并查看属性,只需将“HideSelection”更改为True即可。你也可以为它编码: ComboBox1.HideSelection = True

答案 3 :(得分:2)

为了解决这个问题,我几乎尝试了一切:

  • DropdownStyle属性设置为DropdownList
  • this.BeginInvoke(new Action(() => { comboBox1.Select(0, 0); }));
  • combobox1.SelectionLength = 0;
  • 更改comboBox.TabIndex
  • 未尝试SendKeys.Send("{ESC}");,因为它不是一个可靠的解决方案

没有任何帮助。也许是因为我的组合框中没有文字,只有图片。 唯一稳定且有效的解决方案是将焦点转移到另一个Label控件上:

    label.Focus();

您也可以隐藏该标签。

答案 4 :(得分:1)

有一个简单的解决方案

private void myComboBox_Paint(object sender, PaintEventArgs e)
{
     myComboBoxComboBox.SelectionLength = 0;
}

希望它有所帮助:)

答案 5 :(得分:0)

我遇到了同样的问题,在找不到合适的解决方案后,我和@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

适合我的工作