无论如何都要停止winforms组合框中的选定项目在设置时自动突出显示? (通过组合框属性SelectedIndex或SelectedItem) .
会发生的是我们使用一组项目填充组合框,然后设置我们想要在组合中显示的项目的索引,但这会导致文本突出显示 . 当组合框被禁用时,这意味着很难阅读文本,因为高亮颜色是蓝色而文本颜色是白色 . 看起来这种行为是设计的,但它非常烦人!
我在网上找到并尝试过的唯一解决方案是将组合框控件子类化,但这太具侵入性,这意味着我们必须替换应用程序中的所有组合框来解决这个问题 . 我已经尝试在加载父控件后将组合上的SelectionLength属性设置为0,并且还尝试在组合框上调用Select(0,0),但两者都没有达到预期的效果 .
有任何想法吗?
谢谢
2 回答
这似乎是
ComboBox
的本机Windows实现中的错误,DropDownStyle
是DropDown
.我认为最好的解决方案是处理
ComboBox
的Resize
事件,将SelectionLength
属性设置为0(零) . 该问题的答案详细说明了该解决方案:Editbox portion of ComboBox gets selected automatically
但是,我发现即使是解决这个bug的黑客修复并不总是有效 . 如果
ComboBox
在TableLayoutPanel
中,并且TableLayoutPanel
具有多个具有Percent
大小类型的列,则该修复通常不起作用 .一张图片胜过千言万语 . 请参阅以下用于演示此问题的表单的屏幕截图 .
这会奏效