我有一个ComboBox "I named it Combo“,它被加载到第二列中的C1FlexGrid "I named it fgMain”中,我想要处理键盘,使用户可以在这个组合框上按enter键。
我使用以下代码来创建combobox并用数据填充它:
fgMain.Cols(2).Editor = Combo
Combo.DrawMode = DrawMode.Normal
Dim dap As New OleDbDataAdapter()
Dim dat As New DataTable()
dap.SelectCommand = New OleDbCommand("SELECT EmpInfo.ManualId, EmpInfo.Name FROM EmpInfo;", conn)
dap.Fill(dat)
Combo.DataSource = dat
Combo.DisplayMember = "Name"
Combo.ValueMember = "ManualId"
我使用这段代码来处理c1flexgrid中第二列中任何单元格的回车,它只处理第二列中任何单元格上的第一次回车,并使组合框的下拉列表出现:
Private Sub fgMain_KeyDown(sender As Object, e As KeyEventArgs) Handles fgMain.KeyDown
Select Case e.KeyCode
Case Keys.Enter
Select Case fgMain.Selection.c1
Case 2
fgMain.StartEditing(fgMain.Selection.BottomRow, 2)
e.SuppressKeyPress = True
e.Handled = True
End Select
End Select
现在我需要处理的是,如果用户选择了他想要的项目,那么他将按enter键。第二个time...my问题是当我按第二个enter键选择一个选项时,它只出现在“fgMain(e.row,2)”中不到一秒,然后整行消失,fgMain(e.row,2)变为空
发布于 2014-11-07 18:50:01
看起来您的问题是因为您正在使用FlexGrid的KeyPress事件,而您希望ComboBox处理KeyPress事件。你可以使用组合框的事件,或者,如果你需要一些网格的引用,可以使用KeyPressEdit事件。KeyPressEdit事件与System.Windows.Forms.Control.KeyPress事件相对应,只是它在网格处于编辑模式时激发(在本例中,接收键的控件是编辑器,而不是网格本身)。
请参阅以下代码片段:
Private Sub fgM_KyDwnEdt(ByVal sender As Object, ByVal e As KeyEditEventArgs) Handles fgMain.KeyDownEdit
Select Case e.KeyCode
Case Keys.Enter
Select Case fgMain.Selection.c1
Case 2
fgMain.StartEditing(fgMain.Selection.BottomRow, 2)
e.Handled = True
End Select
End Select
End Sub
https://stackoverflow.com/questions/26777266
复制相似问题