using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Test
{
public partial class Form1: Form
{
DateTimePicker dtp = new DateTimePicker(); //实例化一个DateTimePicker控件
Rectangle _Rectangle;
public Form1()
{
InitializeComponent();
dataGridView1.Controls.Add(dtp); //将时间控件插手DataGridView
dtp.Visible = false; //先不显示
dtp.Format = DateTimePickerFormat.Custom; //设置日期格局,2017-11-11
dtp.TextChanged += new EventHandler(dtp_TextChange); //为时间控件插手事件dtp_TextChange
}
/*************时间控件选择时间时****************/
private void dtp_TextChange(object sender, EventArgs e)
{
dataGridView1.CurrentCell.Value = dtp.Text.ToString(); //时间控件选择时间时,将时间内容赋给地址的单元格
}
/****************单元格被单击,判断是否是放时间控件的那一列*******************/
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
_Rectangle = dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); //得到地址单元格位置和巨细
dtp.Size = new Size(_Rectangle.Width, _Rectangle.Height); //把单元格巨细赋给时间控件
dtp.Location = new Point(_Rectangle.X, _Rectangle.Y); //把单元格位置赋给时间控件
dtp.Visible = true; //显示控件
}
else
dtp.Visible = false;
}
/***********当列的宽度变革时,时间控件先隐藏起来,否则单元格宽高变革不时间控件无法随着变***********/
private void dataGridView1_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
{
dtp.Visible = false;
}
/***********滚动条滚动时,,单元格位置产生变革,也隐藏时间控件,否则时间控件位置不动就乱了********/
private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
dtp.Visible = false;
}