winforms 是否停止组合框中选定项的彩色高亮显示?

aor9mmx1  于 2023-01-05  发布在  其他
关注(0)|答案(7)|浏览(138)

我在WinForm中使用组合框,但当我选择组合框中的任何项目时,选定项目的背景色为蓝色。我想删除此蓝色背景色(特别是在窗体加载时,尝试将焦点设置为窗体中的其他控件,但组合突出显示未删除),但应选择项目。
有谁能帮忙吗...?

pkln4tw6

pkln4tw61#

为了解决同样的问题,我已经尝试了几乎一切:

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

没什么帮助。可能是因为我的组合框中没有文本,只有图片。唯一稳定有效的解决方案是将焦点移到另一个Label控件上:

label.Focus();

您也可以隐藏该标签。

aiazj4mn

aiazj4mn2#

似乎唯一的方法是将combobox控件子类化。
下面是一个例子,有人这样做:
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/e234c4a7-0cf7-4284-a072-8152f7593002/
网络上可能有更多的指导你。

wz8daaqr

wz8daaqr3#

我在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;
}
sh7euo9m

sh7euo9m4#

我不是VB的大用户,只在Excel中玩过,但在我的组合框中进行选择时也遇到过这个问题,我终于找到了摆脱蓝色文本突出显示的方法。
我在用户窗体上有一个ComboBox。通过选择ComboBox并查看属性,只需将“HideSelection”更改为True就可以了。您还可以为它编写代码:组合框1.隐藏选定内容=真

2w3rbyxf

2w3rbyxf5#

有一个简单的解决方案为您

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

希望对你有帮助:)

f2uvfpb9

f2uvfpb96#

简单的方法就是禁用组合框,然后再启用它

combobox.Enabled = false;
combobox.Enabled = true;

即使您选择了其中的一个项目,该项目仍将被选中,但高亮显示将消失

z9zf31ra

z9zf31ra7#

我遇到了同样的问题,在没有找到一个有效的解决方案后,我有了和@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

对我来说很好

相关问题