DataGridView自定义控件类
- 格式:pdf
- 大小:194.50 KB
- 文档页数:22
DataGridView⾃定义控件类
1 public class clsWindowGird
2 {
3 public static void Editcol(int iColumnCount, DataGridView Grid, string sCaption, string sName, int iWidth, bool bVisible, bool bEdit, DataGridViewColumnSortMode SortMode, GridColumnType ColumnType)
4 {
5 DataGridViewColumn column = new DataGridViewColumn();
6 switch (ColumnType)
7 {
8 case GridColumnType.enCheckBox:
9 column = new DataGridViewCheckBoxColumn();
10 column.HeaderCell = new DataGridViewCheckBoxHeaderCell();
11 break;
12 case GridColumnType.enTextBox:
13 column = new DataGridViewTextBoxColumn();//new DataGridViewTextBoxColumn();
14 break;
15 case GridColumnType.enComboBox:
16 column = new DataGridViewComboBoxColumn();
17 break;
18 case GridColumnType.enButton:
19 column = new DataGridViewDisableButtonColumn();
20 break;
21 case GridColumnType.enProgressBar:
22 column = new DataGridViewProgressBarColumn();
23 break;
24 case GridColumnType.enDateTimePicker:
25 column = new CalendarColumn();
26 break;
27 case GridColumnType.enWorkStatus:
28 column = new WorkStatusColumn();
29 break;
30 case GridColumnType.enImage:
31 column = new DataGridViewImageColumn();
32 break;
33 case GridColumnType.enBrighter:
34 column = new BrighterColumn();
35 break;
36 case GridColumnType.enVolume:
37 column = new VolumeColumn();
38 break;
39 case GridColumnType.enTrackBar:
40 column = new TrackBarColumn();
41 break;
42 case GridColumnType.enTimeZone:
43 column = new TimeZoneColumn();
44 break;
45 case GridColumnType.enVolumeTrackBar:
46 column = new VolumeTrackBarColumn();
47 break;
48 case GridColumnType.enBrighterTrackBar:
49 column = new BrighterTrackBarColumn();
50 break;
51 }
52 switch (sCaption.Substring(0, 1))
53 {
54 case "^":
55 column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
56 break;
57 case "<":
58 column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
59 break;
60 case ">":
61 column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
62 break;
63 }
64 column.HeaderText = sCaption.Remove(0, 1);
65 column.SortMode = SortMode;
66 Grid.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
67
68 column.Name = sName;
69 column.Visible = bVisible;
70 column.ReadOnly = bEdit;
71 //column.Width = iWidth * int.Parse(font.Size.ToString());
72 column.Width = iWidth;
73 Grid.Columns.Add(column);
74 }
75 public enum GridColumnType
76 {
77 enTextBox = 0, //⽂本框
78 enComboBox = 1,//下拉框
79 enCheckBox = 2,//复选框
80 enButton = 3, //按钮
81 enProgressBar = 4,//进度条
82 enDateTimePicker = 5, //时间框
83 enWorkStatus = 6, //⼯作状态图标⽂字
84 enImage = 7, //图⽚框
85 enBrighter = 8,//亮度图标⽂字
86 enVolume = 9, //⾳量图标⽂字
87 enVolumeTrackBar = 10, //调节⾳量带滑块
88 enTimeZone = 11, //⾃定义控件
89 enTrackBar = 12, //滑块
90 enBrighterTrackBar = 13, //滑块
91 }
92 #region 可以启⽤(禁⽤)按钮的⾃定义Grid按钮列和单元格
93 public class DataGridViewDisableButtonColumn : DataGridViewButtonColumn
94 {
95 public DataGridViewDisableButtonColumn()
96 {
97 this.CellTemplate = new DataGridViewDisableButtonCell();
98 }
99 }
100 public class DataGridViewDisableButtonCell : DataGridViewButtonCell
101 {
102 private bool enabledValue;
103 public bool Enabled
104 {
105 get
106 {
107 return enabledValue;
108 }
109 set
110 {
111 enabledValue = value;
112 }
113 }
114
115 // 重写
116 public override object Clone()
117 {
118 DataGridViewDisableButtonCell cell = (DataGridViewDisableButtonCell)base.Clone();
119 cell.Enabled = this.Enabled; 120 return cell;
121 }
122
123 // 默认情况下,按钮可⽤
124 public DataGridViewDisableButtonCell()
125 {
126 this.enabledValue = true;
127 }
128
129 protected override void Paint(Graphics graphics,
130 Rectangle clipBounds, Rectangle cellBounds, int rowIndex,
131 DataGridViewElementStates elementState, object value,
132 object formattedValue, string errorText,
133 DataGridViewCellStyle cellStyle,
134 DataGridViewAdvancedBorderStyle advancedBorderStyle,
135 DataGridViewPaintParts paintParts)
136 {
137 // 判断是否被禁⽤,如果被禁⽤,这绘制不可⽤的按钮样式
138 if (!this.enabledValue)
139 {
140 //绘制背景
141 if ((paintParts & DataGridViewPaintParts.Background) ==
142 DataGridViewPaintParts.Background)
143 {
144 SolidBrush cellBackground =
145 new SolidBrush(cellStyle.BackColor);
146 graphics.FillRectangle(cellBackground, cellBounds);
147 cellBackground.Dispose();
148 }
149
150 // 绘制边框
151 if ((paintParts & DataGridViewPaintParts.Border) ==
152 DataGridViewPaintParts.Border)
153 {
154 PaintBorder(graphics, clipBounds, cellBounds, cellStyle,
155 advancedBorderStyle);
156 }
157
158 // 计算按钮的绘制区域,⼤⼩等
159 Rectangle buttonArea = cellBounds;
160 Rectangle buttonAdjustment =
161 this.BorderWidths(advancedBorderStyle);