我对使用组合框有一些疑问。
1)我需要像这样从类中引用组合框:
If Me.ActiveControl.GetType Is GetType(ComboBox) And combodroppeddown = False) Then
something...
End If
从这里我需要直接从 AND 来检查这个组合框是否被下拉,但我不知道如何。
2)我的实际组合框类型是“DropDownList”类型。
问题是,如果我将其下拉并使用向上/向下键键入,则值会根据所选行进行更改。如果我然后按 ESC,那么最后一个值将保持为不需要的值。
如果我在删除列表时按 ESC,是否可以从删除的那一刻起返回原始值?
怎么做?
这是对我的 xCombo 子类的仔细研究,以在第二个问题中获得帮助...
Public Class xAutoCombo
Inherits ComboBox
Private entertext As String
Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs)
If e.Control Then ' this dropped a list with keyboard
If e.KeyCode = Keys.Down Then
Me.DroppedDown = True
End If
End If
'' this should return value back if ESC was pressed
'' but don't work!
If Me.DroppedDown And e.KeyCode = Keys.Escape Then
Me.Text = entertext
End If
MyBase.OnKeyDown(e)
End Sub
Protected Overrides Sub OnDropDown(ByVal e As System.EventArgs)
entertext = Me.Text '' this remember text in moment of droping
MyBase.OnDropDown(e)
End Sub
编辑:
在这里,我发现了一个我想解决的功能问题。
当组合被删除并且我通过键盘浏览列表然后用鼠标按下以形成(或组合之外)时,它会关闭一个列表并设置最后一次选择的值。
相反,我希望该组合仅在单击鼠标以列出列表或使用键盘按 Enter 键时设置他的新值。