对了,是在WinForm中,不是ASP.NET中
解决方案 »
- C#操作Excel的excelOperate这个类在哪里啊!
- 请问Microsoft Visual Studio 2008到底是个什么开发环境?
- 网页图片显示红叉,用记事本打开,保存一下就能显示了,什么都没有改动,请问是怎么回事?
- C# 动态添加label的问题?
- 一个关于修改文本内容的问题
- 工作满一年喽,散分庆祝!
- 控件刷新问题,在线等,急!!!
- 在用C#做的WEB程序中,用DATAGRID的分页功能,在点击第二页时显示的还是第一页,为什么?
- 在c#中panl中如何禁止鼠标右键和快捷键?
- 在page_Load中设断点,第一次可以中断,再次运行就不中断了,为何
- .net开发win服务时遇到一个问题:老是说我的服务已经存在
- 接口方法必须声明主体,因为它未标记abstract或extern
DataTimePicker dtp = new DataTimePicker();
DataGridTextBoxColumn dgtb = new DataGridTextBoxColumn();
dgtb.TextBox.Controls.Add(dtp);
dtp.BringToFront();
using System.Windows.Forms;
using System.Drawing;
using System.Data;namespace MyControls
{
/// <summary>
/// DataGridDatePickColumn 的摘要说明。
/// </summary>
public class DataGridDatePickColumn : DataGridTextBoxColumn
{
public DateTimePicker ColunmDatePicker;
private bool m_IsEditing;
private int m_RowNum;
public static int m_RowCount;
private CurrencyManager m_Source; /// <summary>
/// 构造器
/// </summary>
public DataGridDatePickColumn()
{
m_Source = null;
m_RowCount = -1;
m_IsEditing = false; ColunmDatePicker = new DateTimePicker();
ColunmDatePicker.Leave +=new EventHandler(ColunmDatePicker_Leave);
ColunmDatePicker.Enter +=new EventHandler(ColunmDatePicker_Enter);
}
/// <summary>
/// 失去焦点时显示为TextBox
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ColunmDatePicker_Leave(object sender, EventArgs e)
{
if(m_IsEditing)
{
SetColumnValueAtRow(m_Source,m_RowNum,ColunmDatePicker.Text);
m_IsEditing = false;
Invalidate();
}
ColunmDatePicker.Hide();
this.DataGridTableStyle.DataGrid.Scroll -= new EventHandler(DataGrid_Scroll);
}
/// <summary>
/// 获得焦点时显示为DatePicker
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ColunmDatePicker_Enter(object sender, EventArgs e)
{
m_IsEditing = true;
}
protected override void Edit(CurrencyManager source, int rowNum, Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
{
base.Edit (source, rowNum, bounds, readOnly, instantText, cellIsVisible); m_RowNum = rowNum;
m_Source = source;
ColunmDatePicker.Parent = this.TextBox.Parent;
ColunmDatePicker.Location = this.TextBox.Location;
ColunmDatePicker.Size = new Size(this.TextBox.Width,this.TextBox.Height);
//编辑DatePicker时,下拉列表显示当前记录的文本
ColunmDatePicker.Text= this.TextBox.Text;
this.TextBox.Visible = false;
ColunmDatePicker.Visible = true;
//拉动DataGrid滚动条时,触发事件
this.DataGridTableStyle.DataGrid.Scroll +=new EventHandler(DataGrid_Scroll);
ColunmDatePicker.BringToFront();
ColunmDatePicker.Focus();
}
private void DataGrid_Scroll(object sender, EventArgs e)
{
//拉动DataGrid滚动条时,DatePicker隐藏
if(ColunmDatePicker.Visible)
{
ColunmDatePicker.Hide();
}
}
}//end class
}//end namespace
DataGridTableStyle myTableStyle = new DataGridTableStyle();
myTableStyle.MappingName = YOURtable.TableName; //创建自制的DataGridDatePickerColumn对象
DataGridDatePickColumn DateCol = new DataGridDatePickColumn();
DateCol.MappingName = YOURtable.Columns["YOURcloumn"].ColumnName;
DateCol.HeaderText = "日期";
DateCol.Width = 120;
DateCol.Alignment = HorizontalAlignment.Right;
myTableStyle.GridColumnStyles.Add(DateCol);
dataGrid1.TableStyles.Clear();
dataGrid1.TableStyles.Add(myTableStyle);