DataGridView-添加一列为时间,加入时间控件Calender
来源:互联网 发布:证券交易软件哪个好 编辑:程序博客网 时间:2024/05/23 16:36
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DataGridView时间列
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public class CalendarColumn : DataGridViewColumn
{
private bool showUpDown = true;
public bool ShowUpDown
{
get
{
return showUpDown;
}
set
{
showUpDown = value;
}
}
public CalendarColumn()
: base(new CalendarCell())
{
}
public override DataGridViewCell CellTemplate
{
get
{
return base.CellTemplate;
}
set
{
// Ensure that the cellused for the template is a CalendarCell.
if (value != null&&
!value.GetType().IsAssignableFrom(typeof(CalendarCell)))
{
throw newInvalidCastException("Must be a CalendarCell");
}
base.CellTemplate = value;
}
}
private void InitializeComponent()
{
}
}
public class CalendarCell : DataGridViewTextBoxCell
{
public CalendarCell()
: base()
{
// Use the short date format.
this.Style.Format="yyyy-MM-dd";
}
public override void InitializeEditingControl(int rowIndex, object
initialFormattedValue,DataGridViewCellStyle dataGridViewCellStyle)
{
// Set the value of the editingcontrol to the current cell value.
base.InitializeEditingControl(rowIndex, initialFormattedValue,
dataGridViewCellStyle);
CalendarEditingControl ctl =
DataGridView.EditingControlas CalendarEditingControl;
ctl.Value =(DateTime)this.Value;//此处存在类型强制转换的可能,根据实际情况改造。
ctl.Format =DateTimePickerFormat.Custom;
ctl.CustomFormat =dataGridViewCellStyle.Format;
ctl.ShowUpDown =((CalendarColumn)this.OwningColumn).ShowUpDown;//此处去掉就是canlender
}
public override Type EditType
{
get
{
// Return the type of theediting contol that CalendarCell uses.
returntypeof(CalendarEditingControl);
}
}
public override Type ValueType
{
get
{
// Return the type of thevalue that CalendarCell contains.
return typeof(DateTime);
}
}
public override object DefaultNewRowValue
{
get
{
// Use the current date andtime as the default value.
return DateTime.Now;
}
}
}
class CalendarEditingControl : DateTimePicker,IDataGridViewEditingControl
{
DataGridView dataGridView;
private bool valueChanged = false;
int rowIndex;
public CalendarEditingControl()
{
//this.ShowUpDown =base.ShowUpDown;
}
// Implements the IDataGridViewEditingControl.EditingControlFormattedValue
// property.
public object EditingControlFormattedValue
{
get
{
returnthis.Value.ToLongDateString();
}
set
{
String newValue = value asString;
if (newValue != null)
{
this.Value =DateTime.Parse(newValue);
}
}
}
// Implements the
// IDataGridViewEditingControl.GetEditingControlFormattedValue method.
public object GetEditingControlFormattedValue(
DataGridViewDataErrorContextscontext)
{
returnEditingControlFormattedValue;
}
// Implements the
// IDataGridViewEditingControl.ApplyCellStyleToEditingControl method.
public void ApplyCellStyleToEditingControl(
DataGridViewCellStyledataGridViewCellStyle)
{
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 theIDataGridViewEditingControl.EditingControlWantsInputKey
// method.
public bool EditingControlWantsInputKey(
Keys key, booldataGridViewWantsInputKey)
{
// Let the DateTimePickerhandle 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 theIDataGridViewEditingControl.PrepareEditingControlForEdit
// method.
public void PrepareEditingControlForEdit(bool selectAll)
{
// No preparation needs to bedone.
}
// 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 thatthe contents of the cell
// have changed.
valueChanged = true;
this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
base.OnValueChanged(eventargs);
}
}
}
}
以上编译通过后,在前天DataGridView的编辑列里面,选择列类型ColmnType多了一种类型CalendarColumn,选择后运行。
参考
- DataGridView-添加一列为时间,加入时间控件Calender
- c#datagridview中添加时间控件DateTimePicker
- datagridview添加时间列
- DataGridView 时间控件应用
- c#如何实现在datagridview中加入时间控件、numericupanddown控件
- java calender获取时间
- 获取时间Calender
- 时间处理 Date Calender
- C#DataGridView加时间控件
- 为DataGridView增加日期/时间列
- dataGridView为单元格动态添加按钮控件
- js - 日历控件(2)-加入了时间
- 为DataGridView的一个列加入DateTimePicker控件
- 为DataGridView的一个列加入DateTimePicker控件(转)
- C# 为DataGridView的一个列加入DateTimePicker控件
- 为DataGridView的一个列加入DateTimePicker控件
- Android Calender显示日期与时间
- Android利用Calender获取系统当前时间
- 名词解释-【SOAP】
- 名词解释-【SOAP】
- JSP九大内置对象及详细信息
- Jquery实现动态修改表格
- struts1.x框架核心配置
- DataGridView-添加一列为时间,加入时间控件Calender
- 最长升序列求解(OJ 1093)
- oracle 10g 使用REGEXP_SUBSTR 分拆字符串
- 信息很多,但有效信息不多
- 原、反、补、移
- 利用DirectShow播放标准格式文件范例
- Java-过滤器
- VS2005 + AutoCAD2008, 无法调试!
- C语言 指针相关问题--调用函数实现空间动态申请