第一步
DateTimePickerm_zldtp = new DateTimePicker();
Rectanglem_zlRectangle;
publicUCWLZL()
{
InitializeComponent();
this.dgvZLData.Controls.Add(m_zldtp);//把时间控件加入DataGridView
m_zldtp.Visible = false; //先不让它显示
m_zldtp.Format = DateTimePickerFormat.Custom;
m_zldtp.CustomFormat = "yyyy-MM-dd";
m_zldtp.TextChanged += new EventHandler(m_zldtp_TextChange);//为时间控件加入事件dtp_TextChange
}
第二步
private void m_zldtp_TextChange(objectsender, EventArgs e)
{
this.dgvZLData.CurrentCell.Value= m_zldtp.Text;
}
第三步
privatevoid dgvZLData_CellClick(object sender, DataGridViewCellEventArgse)
{
try
{
if(e.ColumnIndex == 0) //如果DataGridView中第一列
{
m_zlRectangle =dgvZLData.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); //得到所在单元格位置和大小
m_zldtp.Size = new Size(m_zlRectangle.Width,m_zlRectangle.Height); //把单元格大小赋给时间控件
m_zldtp.Location = new Point(m_zlRectangle.X,m_zlRectangle.Y); //把单元格位置赋给时间控件
m_zldtp.Visible = true; //可以显示控件了
if(this.dgvZLData.CurrentCell.Value != null && this.dgvZLData.CurrentCell.Value.Equals(DBNull.Value) == false)
{
m_zldtp.Value = Convert.ToDateTime(this.dgvZLData.CurrentCell.Value);
}
else
{
m_zldtp.Value = DateTime.Now;
}
}
else
{
m_zldtp.Visible = false;
}
}
catch(Exception ex)
{
Class_Log4Net.WriteError("UCWLZL+dgvZLData_CellClick()" +ex.Message + ex.Source);
}
}
第四部
privatevoid dgvZLData_CellLeave(object sender, DataGridViewCellEventArgse)
{
if(e.ColumnIndex == 0)
{
if(this.dgvData.CurrentCell.Value == null || this.dgvData.CurrentCell.Value.Equals(DBNull.Value) == true)
{
this.dgvData.CurrentCell.Value= m_dtp.Text;
}
}
}
第五步
privatevoid dgvZLData_ColumnWidthChanged(object sender, DataGridViewColumnEventArgse)
{
m_zldtp.Visible = false;
}
privatevoid dgvZLData_Scroll(objectsender, ScrollEventArgs e)
{
m_zldtp.Visible = false;
}
本文详细介绍了如何在Windows应用程序中使用DateTimePicker控件与DataGridView进行交互,包括时间选择、事件响应以及数据更新过程。
836

被折叠的 条评论
为什么被折叠?



