/
Form1.cs
89 lines (78 loc) · 3.58 KB
/
Form1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid;
namespace DoubleClickCell {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
new DevExpress.XtraGrid.Design.XViewsPrinting(gridControl1);
radioGroup1_SelectedIndexChanged(radioGroup1, EventArgs.Empty);
}
private static void DoRowDoubleClick(GridView view, Point pt) {
GridHitInfo info = view.CalcHitInfo(pt);
if(info.InRow || info.InRowCell) {
string colCaption = info.Column == null ? "N/A" : info.Column.GetCaption();
MessageBox.Show(string.Format("DoubleClick on row: {0}, column: {1}.", info.RowHandle, colCaption));
}
}
private void radioGroup1_SelectedIndexChanged(object sender, EventArgs e) {
gridView1.DoubleClick -= gridView1_DoubleClick;
gridView1.ShownEditor -= gridView1_ShownEditor;
gridView1.HiddenEditor -= gridView1_HiddenEditor;
switch(radioGroup1.SelectedIndex) {
case 0:
// Requires a single event handler. Works always.
gridView1.OptionsBehavior.Editable = false;
gridView1.DoubleClick += gridView1_DoubleClick;
break;
case 1:
// Requires a single event handler. Doesn't work when double-clicking an open inplace editor.
gridView1.OptionsBehavior.Editable = true;
gridView1.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click;
gridView1.DoubleClick += gridView1_DoubleClick;
break;
case 2:
// Requires 3 event handlers. Works always.
gridView1.OptionsBehavior.Editable = true;
gridView1.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Default;
gridView1.DoubleClick += gridView1_DoubleClick;
gridView1.ShownEditor += gridView1_ShownEditor;
gridView1.HiddenEditor += gridView1_HiddenEditor;
break;
}
}
private void gridView1_DoubleClick(object sender, EventArgs e) {
GridView view = (GridView)sender;
Point pt = view.GridControl.PointToClient(Control.MousePosition);
DoRowDoubleClick(view, pt);
}
BaseEdit inplaceEditor;
private void gridView1_ShownEditor(object sender, EventArgs e) {
inplaceEditor = ((GridView)sender).ActiveEditor;
inplaceEditor.DoubleClick += inplaceEditor_DoubleClick;
}
private void gridView1_HiddenEditor(object sender, EventArgs e) {
if(inplaceEditor != null) {
inplaceEditor.DoubleClick -= inplaceEditor_DoubleClick;
inplaceEditor = null;
}
}
void inplaceEditor_DoubleClick(object sender, EventArgs e) {
BaseEdit editor = (BaseEdit)sender;
GridControl grid = (GridControl)editor.Parent;
Point pt = grid.PointToClient(Control.MousePosition);
GridView view = (GridView)grid.FocusedView;
DoRowDoubleClick(view, pt);
}
}
}