积极答复者
ComboBox如何在DropDown事件中改变DropDownStyle?

问题
-
为了让用户在打开ComboBox下拉列表时,能够在文本框中输入数据,以便检索列表,我试图在DropDown事件中将DropDownStyle改为ComboBoxStyle.DropDown,但它却导致了列表关闭,从而无法打开列表。怎么办好呢?
Protected Overrides Sub OnDropDown(e As System.EventArgs)
Me.DropDownStyle = ComboBoxStyle.DropDown
MyBase.OnDropDown(e)
End Sub
Protected Overrides Sub OnDropDownClosed(e As System.EventArgs)
Me.DropDownStyle = ComboBoxStyle.DropDownListMyBase.OnDropDownClosed(e)
End Sub
韩立学
答案
-
谢谢回复!
在不打开列表时,使用ComboBoxStyle.DropDownList ,一是可以避免用户输入非法数据,二是可以直接进行渐进式检索,方便快捷。
此路可能不通,我只好在KeyUp中,Ctrl+Enter变更ComboBoxStyle了。
韩立学- 已标记为答案 Mike FengModerator 2012年1月18日 15:42
全部回复
-
为了让用户在打开ComboBox下拉列表时,能够在文本框中输入数据,以便检索列表,我试图在DropDown事件中将DropDownStyle改为ComboBoxStyle.DropDown,但它却导致了列表关闭,从而无法打开列表。怎么办好呢?
Protected Overrides Sub OnDropDown(e As System.EventArgs)
Me.DropDownStyle = ComboBoxStyle.DropDown
MyBase.OnDropDown(e)
End Sub
Protected Overrides Sub OnDropDownClosed(e As System.EventArgs)
Me.DropDownStyle = ComboBoxStyle.DropDownListMyBase.OnDropDownClosed(e)
End Sub
韩立学听您的描述,直接设置ComboBox的属性DropDownStyle为DropDown
把以上两个事件拿掉
应该就可以了
- The blog of typewriter職人
- Convert C# to VB.NET
- /*If my concept is wrong ,please correct me.Thanks.*/
-
你好, 可以说说为什么在不打开列表的时候一定需要 ComboBoxStyle.DropDownList 吗?因为每次在变更 ComboBoxStyle的时候整个combobox都要重重绘,而当dropdown事件触发的时候,先处理了dropdown,即show出list但是随后马上重绘整个combobox,show出的list也就被destroy了,这样所以你就看不到那个list。
Mike Feng
MSDN Community Support | Feedback to us
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
-
谢谢回复!
在不打开列表时,使用ComboBoxStyle.DropDownList ,一是可以避免用户输入非法数据,二是可以直接进行渐进式检索,方便快捷。
此路可能不通,我只好在KeyUp中,Ctrl+Enter变更ComboBoxStyle了。
韩立学- 已标记为答案 Mike FengModerator 2012年1月18日 15:42