我對使用組合框有一些疑問。使用類組合框
1)我需要從類參考組合框是這樣的:
If Me.ActiveControl.GetType Is GetType(ComboBox) And combodroppeddown = False) Then
something...
End If
在這裏,我需要從一併檢查該組合框掉落下來,但我不知道怎麼辦。
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鍵即可。
不,它不在DataGridView中,是獨立的。但我試圖將其子類化以獲得幾個所需的功能。通過事件協調可以。 –
啊!好。抱歉。我會刪除我上面的評論。 – varocarbas
嘗試:'如果Me.DroppedDown AndAlso e.KeyCode = Keys.Escape Then' ...我也不完全確定你的一些'ME'引用不應該是'MyBase' ...而不是捕獲文本,我會捕獲selectedindex或selectedItem – Plutonix