DataGridView 自定义日期列 组件
来源:互联网 发布:java final 内嵌机制 编辑:程序博客网 时间:2024/05/17 02:56
public
class
CalendarColumn : DataGridViewColumn
{
public
CalendarColumn()
:
base
(
new
CalendarCell())
{
}
public
override
DataGridViewCell CellTemplate
{
get
{
return
base
.CellTemplate;
}
set
{
// Ensure that the cell used for the template is a CalendarCell.
if
(value !=
null
&&
!value.GetType().IsAssignableFrom(
typeof
(CalendarCell)))
{
throw
new
InvalidCastException(
"Must be a CalendarCell"
);
}
base
.CellTemplate = value;
}
}
}
--------------------------------------------------------------------------------------
public
class
CalendarCell : DataGridViewTextBoxCell
{
public
CalendarCell()
:
base
()
{
// Use the short date format.
this
.Style.Format =
"d"
;
}
public
override
void
InitializeEditingControl(
int
rowIndex,
object
initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
{
// Set the value of the editing control to the current cell value.
base
.InitializeEditingControl(rowIndex, initialFormattedValue,
dataGridViewCellStyle);
CalendarEditingControl ctl =
DataGridView.EditingControl
as
CalendarEditingControl;
ctl.Value = (DateTime)
this
.Value;
}
public
override
Type EditType
{
get
{
// Return the type of the editing contol that CalendarCell uses.
return
typeof
(CalendarEditingControl);
}
}
public
override
Type ValueType
{
get
{
// Return the type of the value that CalendarCell contains.
return
typeof
(DateTime);
}
}
public
override
object
DefaultNewRowValue
{
get
{
// Use the current date and time as the default value.
return
DateTime.Now;
}
}
}
class
CalendarEditingControl : DateTimePicker, IDataGridViewEditingControl
{
DataGridView dataGridView;
private
bool
valueChanged =
false
;
int
rowIndex;
public
CalendarEditingControl()
{
this
.Format = DateTimePickerFormat.Short;
}
// Implements the IDataGridViewEditingControl.EditingControlFormattedValue
// property.
public
object
EditingControlFormattedValue
{
get
{
return
this
.Value.ToShortDateString();
}
set
{
String newValue = value
as
String;
if
(newValue !=
null
)
{
this
.Value = DateTime.Parse(newValue);
}
}
}
// Implements the
// IDataGridViewEditingControl.GetEditingControlFormattedValue method.
public
object
GetEditingControlFormattedValue(
DataGridViewDataErrorContexts context)
{
return
EditingControlFormattedValue;
}
// Implements the
// IDataGridViewEditingControl.ApplyCellStyleToEditingControl method.
public
void
ApplyCellStyleToEditingControl(
DataGridViewCellStyle dataGridViewCellStyle)
{
this
.Font = dataGridViewCellStyle.Font;
this
.CalendarForeColor = dataGridViewCellStyle.ForeColor;
this
.CalendarMonthBackground = dataGridViewCellStyle.BackColor;
}
// Implements the IDataGridViewEditingControl.EditingControlRowIndex
// property.
public
int
EditingControlRowIndex
{
get
{
return
rowIndex;
}
set
{
rowIndex = value;
}
}
// Implements the IDataGridViewEditingControl.EditingControlWantsInputKey
// method.
public
bool
EditingControlWantsInputKey(
Keys key,
bool
dataGridViewWantsInputKey)
{
// Let the DateTimePicker handle the keys listed.
switch
(key & Keys.KeyCode)
{
case
Keys.Left:
case
Keys.Up:
case
Keys.Down:
case
Keys.Right:
case
Keys.Home:
case
Keys.End:
case
Keys.PageDown:
case
Keys.PageUp:
return
true
;
default
:
return
false
;
}
}
// Implements the IDataGridViewEditingControl.PrepareEditingControlForEdit
// method.
public
void
PrepareEditingControlForEdit(
bool
selectAll)
{
// No preparation needs to be done.
}
// Implements the IDataGridViewEditingControl
// .RepositionEditingControlOnValueChange property.
public
bool
RepositionEditingControlOnValueChange
{
get
{
return
false
;
}
}
// Implements the IDataGridViewEditingControl
// .EditingControlDataGridView property.
public
DataGridView EditingControlDataGridView
{
get
{
return
dataGridView;
}
set
{
dataGridView = value;
}
}
// Implements the IDataGridViewEditingControl
// .EditingControlValueChanged property.
public
bool
EditingControlValueChanged
{
get
{
return
valueChanged;
}
set
{
valueChanged = value;
}
}
// Implements the IDataGridViewEditingControl
// .EditingPanelCursor property.
public
Cursor EditingPanelCursor
{
get
{
return
base
.Cursor;
}
}
protected
override
void
OnValueChanged(EventArgs eventargs)
{
// Notify the DataGridView that the contents of the cell
// have changed.
valueChanged =
true
;
this
.EditingControlDataGridView.NotifyCurrentCellDirty(
true
);
base
.OnValueChanged(eventargs);
}
}
- ---------------------------------------------------------------------------
public
class
Form1 : Form
{
private
DataGridView dataGridView1 =
new
DataGridView();
[STAThreadAttribute()]
public
static
void
Main()
{
Application.Run(
new
Form1());
}
public
Form1()
{
this
.dataGridView1.Dock = DockStyle.Fill;
this
.Controls.Add(
this
.dataGridView1);
this
.Load +=
new
EventHandler(Form1_Load);
this
.Text =
"DataGridView calendar column demo"
;
}
private
void
Form1_Load(
object
sender, EventArgs e)
{
CalendarColumn col =
new
CalendarColumn();
this
.dataGridView1.Columns.Add(col);
this
.dataGridView1.RowCount = 5;
foreach
(DataGridViewRow row
in
this
.dataGridView1.Rows)
{
row.Cells[0].Value = DateTime.Now;
}
}
}
0 0
- DataGridView 自定义日期列 组件
- 自定义DataGridView日期型列
- 自定义控件之DataGridView列(日期时间选择列)
- 自定义控件之DataGridView列(日期时间选择列)
- Csharp DataGridView自定义添加DateTimePicker控件日期列
- Csharp DataGridView自定义添加DateTimePicker控件日期列
- 给datagridview添加一个自定义列类型-日期类型
- 自定义DataGridView列
- winform datagridview加自定义列
- 为DataGridView增加日期/时间列
- DataGridView内建日期选择列
- DataGridView列标题可编辑组件
- DataGridViewColumn自定义日期组件
- vue自定义日期组件
- VS2005 DataGridView 控件 设置自定义列
- C#winform datagridview如何自定义列头
- winform中DataGridView自定义列排序
- datagridview自定义列的数据绑定
- Redis几个认识误区
- 各方争利让西安公交"不给力" 市民无奈靠"黑车"
- PowerShell 批量导入/导出Active Directory
- halcon模板匹配(基于形状)——笔记
- iOS ISO8601格式的时间日期字符串转换成NSDate
- DataGridView 自定义日期列 组件
- 一般网页信息抓取(Java htmlparser)
- 我们为什么生病:达尔文医学的新观念
- 寒城攻略:Listo 教你 25 天学会 Swift 语言 - 04 Basic Operators
- 此处无法保存,请联系管理员
- Android SDK 源代码编译
- Android Studio 使用教程(一)
- 代码片段:后台对前台传入json格式数据的非空校验
- POJ 1195 Mobile phones