У меня есть девэкспресс Xtragrid.
Один из столбцов - это RepositorySearchLookupedit
. Я использую событие двойного щелчка, чтобы показать другую форму. Но проблема в том, что когда я дважды щелкаю по этому столбцу, отображается редактор, и открывается всплывающее окно, и после этого запускается событие двойного щелчка. Что я хочу сделать, так это то, что когда пользователь сделал двойной щелчок, всплывающее окно не должно быть открыто, но если я сделаю один щелчок, всплывающее окно должно быть открыто, как обычно.
Для этого я использую объект Timer
, чтобы различать одиночный и двойной щелчок.
Это мой код:
Dim allowopeneditor As Boolean
Private Sub timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
CType(sender, Timer).Stop()
Try
allowopeneditor = True
GridView20.ShowEditor()
Finally
allowopeneditor = False
End Try
End Sub
Private Sub GridView20_DoubleClick(sender As Object, e As EventArgs) Handles GridView20.DoubleClick
Dim p As Point = MousePosition
Timer1.Stop()
Dim view As GridView = CType(sender, GridView)
Dim hitInfo As GridHitInfo = view.CalcHitInfo(view.GridControl.PointToClient(p))
If hitInfo.InRowCell AndAlso sender.focusedcolumn Is col1 Then
Myform1.Show()
End If
End Sub
Private Sub GridView20_ShowingEditor(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles GridView20.ShowingEditor
e.Cancel = sender.FocusedColumn Is col1 AndAlso Not allowopeneditor
End Sub
Private Sub GridView20_Click(sender As Object, e As EventArgs) Handles GridView20.Click
Dim p As Point = MousePosition
Dim view As GridView = CType(sender, GridView)
Dim hitInfo As GridHitInfo = view.CalcHitInfo(view.GridControl.PointToClient(p))
If hitInfo.InRowCell Then Timer1.Start()
End Sub
Но, используя этот код, я получаю странные результаты, иногда двойной щелчок не работает и форма не открывается, иногда не работает один щелчок, и всплывающее окно хранилища не открывается.