我在WinForm中使用组合框但是当我在组合框中选择任何项目时,所选项目背景颜色为蓝色。我想删除这种蓝色背景颜色(特别是在表单加载,尝试将焦点设置为窗体中的其他控件,但组合高亮不删除)但应选择项目。
有人可以帮忙解决这个问题吗?
答案 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
适合我的工作