如何在自定义控件中使用DataGridViewCellStyle的设计器
1个回答
展开全部
分析
DataGridView的每一列都是继承DataGridViewColumn的,一般有
DataGridViewTextBoxColumn, DataGridViewComboBoxColumn等,不过,这些都是系统自带的,而我们也可以根据自己的需要自定义一个DataGridViewColumn,上面就是自定义DateTime列。
自定义DataGridViewColumn都需要有三个类,一个类继承自Column,一个继承自Cell,一个是用来表达Cell中的控件(如ComboBox,DateTimePicker之类)。
这三个类,在当前的控件下,分别是
DataGridViewCalendarColumn,DataGridViewCalendarCell,
DataGridViewCalendarEditingControl它们的命名是经过笔者修改的。
下面对这三个类的修改进行介绍
DataGridViewCalendarColumn类
1初始化
2 override DataGridViewCell CellTemplate(获取或设置用于创建新单元格的模板)
DataGridViewCalendarCell类
1初始化定义Format格式
2 override void InitializeEditingControl(int rowIndex, object
initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)(附加并初始化寄宿的编辑控件)
3 override Type EditType(编辑时的类型)
4 override Type ValueType(值类型)
5 override object DefaultNewRowValue(默认值)
DataGridViewCalendarEditingControl类
1初始化并定义Format
2实现接口object EditingControlFormattedValue(获取或设置编辑器正在修改的单元格的格式化值)
3实现接口GetEditingControlFormattedValue(
DataGridViewDataErrorContexts context)(检索单元格的格式化值)
4实现接口ApplyCellStyleToEditingControl(更改控件的用户界面 (UI),使之与指定单元格样式一致。)
5实现接口EditingControlRowIndex(获取或设置该承载单元格的父行的索引)
6实现接口EditingControlWantsInputKey(确定指定的键是应由编辑控件处理的常规输入键,还是应由 System.Windows.Forms.DataGridView 处理的特殊键。)
7实现接口PrepareEditingControlForEdit(准备当前选中的单元格以进行编辑)
8实现接口RepositionEditingControlOnValueChange(获取或设置一个值,该值指示每当值更改时,是否需要重新定位单元格的内容。)
9实现接口EditingControlDataGridView(获取或设置包含单元格的 System.Windows.Forms.DataGridView)
10实现接口EditingControlValueChanged(获取或设置一个值,该值指示编辑控件的值是否与承载单元格的值不同。)
11实现接口EditingPanelCursor(获取当鼠标指针位于 System.Windows.Forms.DataGridView.EditingPanel 上方但不位于编辑控件上方时所使用的光标。)
12override void OnValueChanged(EventArgs eventargs)(重写数据变化方法)
DataGridView的每一列都是继承DataGridViewColumn的,一般有
DataGridViewTextBoxColumn, DataGridViewComboBoxColumn等,不过,这些都是系统自带的,而我们也可以根据自己的需要自定义一个DataGridViewColumn,上面就是自定义DateTime列。
自定义DataGridViewColumn都需要有三个类,一个类继承自Column,一个继承自Cell,一个是用来表达Cell中的控件(如ComboBox,DateTimePicker之类)。
这三个类,在当前的控件下,分别是
DataGridViewCalendarColumn,DataGridViewCalendarCell,
DataGridViewCalendarEditingControl它们的命名是经过笔者修改的。
下面对这三个类的修改进行介绍
DataGridViewCalendarColumn类
1初始化
2 override DataGridViewCell CellTemplate(获取或设置用于创建新单元格的模板)
DataGridViewCalendarCell类
1初始化定义Format格式
2 override void InitializeEditingControl(int rowIndex, object
initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)(附加并初始化寄宿的编辑控件)
3 override Type EditType(编辑时的类型)
4 override Type ValueType(值类型)
5 override object DefaultNewRowValue(默认值)
DataGridViewCalendarEditingControl类
1初始化并定义Format
2实现接口object EditingControlFormattedValue(获取或设置编辑器正在修改的单元格的格式化值)
3实现接口GetEditingControlFormattedValue(
DataGridViewDataErrorContexts context)(检索单元格的格式化值)
4实现接口ApplyCellStyleToEditingControl(更改控件的用户界面 (UI),使之与指定单元格样式一致。)
5实现接口EditingControlRowIndex(获取或设置该承载单元格的父行的索引)
6实现接口EditingControlWantsInputKey(确定指定的键是应由编辑控件处理的常规输入键,还是应由 System.Windows.Forms.DataGridView 处理的特殊键。)
7实现接口PrepareEditingControlForEdit(准备当前选中的单元格以进行编辑)
8实现接口RepositionEditingControlOnValueChange(获取或设置一个值,该值指示每当值更改时,是否需要重新定位单元格的内容。)
9实现接口EditingControlDataGridView(获取或设置包含单元格的 System.Windows.Forms.DataGridView)
10实现接口EditingControlValueChanged(获取或设置一个值,该值指示编辑控件的值是否与承载单元格的值不同。)
11实现接口EditingPanelCursor(获取当鼠标指针位于 System.Windows.Forms.DataGridView.EditingPanel 上方但不位于编辑控件上方时所使用的光标。)
12override void OnValueChanged(EventArgs eventargs)(重写数据变化方法)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |