原创C# DataGridView 点击某列选择日期/下拉列表框

今天做项目时遇到这个问题,随从网上找例子,找了半天终于从csdn上面找了一个比较合适的,现在公布出来,供大家参考(只是选择日期的-_-)

//1、先声明DateTimePicker 对象(公共的) 
private DateTimePicker dTimePicker = newDateTimePicker(); 
//2、在Form_Load()里边加入以下代码: 
dTimePicker.Visible = false; //默认不显示 
//DateTimePicker的格式为自定义  
dTimePicker.Format = DateTimePickerFormat.Custom; 
//DateTimePicker 的自定义类型 

dTimePicker.CustomFormat = "yyyy-MM-dd HH:mm:ss"; 
//当DateTimePicker 文本变化时赋值操作 
dTimePicker.TextChanged += new EventHandler( dTimePicker_TextChanged ); 
//将这个控件加载到datagiridview中 
dgv.Controls.Add( dTimePicker); 
private void dTimePicker_TextChanged( object sender, EventArgs e )        
{            
	//把dTimePicker的Text值赋给dataGridView1选中的单元格值            
	dgvFKDB.CurrentCell.Value = dTimePicker.Text;       
} 
private void dgvFKDB_CurrentCellChanged( object sender, EventArgs e ) 
{             
	DataGridViewCell CurrnetCell = this.dgvFKDB.CurrentCell;             
	if (CurrnetCell != null && CurrnetCell.OwningColumn.Name == "FKSJ") 
	{                
	    //获得dataGridView1选中单元格显示区域的矩形 
	     Rectangle Rect = this.dgvFKDB.GetCellDisplayRectangle(CurrnetCell.ColumnIndex, CurrnetCell.RowIndex, true ); 
	    //显示dTimePicker在dataGridView1选中单元格显示区域的矩形里面,即选中单元格内 
	     dTimePicker.Visible = true; 
	    dTimePicker.Top = Rect.Top; 
	    dTimePicker.Left = Rect.Left; 
	    dTimePicker.Height = Rect.Height; 
	    TimePicker.Width = Rect.Width; 
	    //dTimePicker控件获取初始值为dataGridView1选中单元格值 
	     dTimePicker.Text = dgvFKDB.Rows[CurrnetCell.RowIndex].Cells[CurrnetCell.ColumnIndex].Value.ToString(); 
	} 
	else 
	{ 
	    this.dTimePicker.Visible = false; 
	} 
}  
本例子由csdn上面改编而来。

源码下载(csdn上面的,可参考)---更新事件:2012-3-21 01:34

原文地址:https://www.cnblogs.com/smthts/p/2409149.html