/
MyGridColumnRenameHelper.cs
122 lines (101 loc) · 3.21 KB
/
MyGridColumnRenameHelper.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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.Columns;
using DevExpress.Utils;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.XtraEditors;
using DevExpress.Skins;
namespace WindowsApplication1
{
public class MyGridColumnRenameHelper
{
#region Fields
GridView gridView;
TextEdit headerEdit;
GridColumn editedColumn;
#endregion
public bool IsEditing
{
get { return editedColumn != null; }
}
#region Methods
public MyGridColumnRenameHelper(GridView view)
{
gridView = view;
Initialize();
SubscribeEvents();
}
void SubscribeEvents()
{
gridView.DoubleClick += gridView_DoubleClick;
headerEdit.Leave += headerEdit_Leave;
headerEdit.KeyDown += headerEdit_KeyDown;
}
GridColumn GetColumn(DXMouseEventArgs args)
{
GridHitInfo info = gridView.CalcHitInfo(args.Location);
if (info.InColumnPanel) return info.Column;
return null;
}
Color GetColor()
{
Skin currentSkin = CommonSkins.GetSkin(gridView.GridControl.LookAndFeel);
return currentSkin.TranslateColor(SystemColors.Control);
}
void Initialize()
{
gridView.OptionsCustomization.AllowSort = false;
headerEdit = new TextEdit();
headerEdit.Hide();
headerEdit.Parent = gridView.GridControl;
headerEdit.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
}
void ShowCaptionEditor(GridColumn column)
{
GridViewInfo vi = gridView.GetViewInfo() as GridViewInfo;
Rectangle bounds = vi.ColumnsInfo[column].Bounds;
bounds.Width -= 3;
bounds.Height -= 3;
bounds.Y += 3;
headerEdit.BackColor = GetColor();
headerEdit.SetBounds(bounds.X, bounds.Y, bounds.Width, bounds.Height);
headerEdit.EditValue = column.GetCaption();
headerEdit.Show();
headerEdit.Focus();
}
void StartColumnCaptionEditing(GridColumn column)
{
ShowCaptionEditor(column);
editedColumn = column;
}
void EndColumnCaptionEditing()
{
if (!IsEditing) return;
editedColumn.Caption = headerEdit.Text;
headerEdit.Hide();
editedColumn = null;
}
#endregion
void gridView_DoubleClick(object sender, EventArgs e)
{
GridColumn column = GetColumn(e as DXMouseEventArgs);
if (column == null) return;
StartColumnCaptionEditing(column);
}
void headerEdit_Leave(object sender, EventArgs e)
{
EndColumnCaptionEditing();
}
void headerEdit_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
EndColumnCaptionEditing();
}
}
}