由于DataGridView自带的ColumnType里面没有DateTimePicker这个
。所以要实现一个输入日期的列就比较麻烦了。通过以下方法可以往DataGridView加入DateTimePicker控件。
首先,前端设计加入一个DataGridView控件,命名为DataGridView1。(文/
piikee
然后,后台.cs文件写入以下代码:
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 moonlight_treasure
public partial class MyCount : Form
DateTimePicker dtp = new DateTimePicker(); //这里实例化一个DateTimePicker控件
Rectangle _Rectangle;
public MyCount()
InitializeComponent();
dataGridView1.Controls.Add(dtp); //把时间控件加入DataGridView
dtp.Visible = false; //先不让它显示
dtp.Format = DateTimePickerFormat.Custom; //设置日期格式为2010-08-05
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; //可以显示控件了
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;
上次因工作需要,需要在DataGridView中添加Combobox及DateTimePicker,于是查询了各种资料,整理后最终实现了想要的效果,现在把相关操作及遇到的问题分享一下。
1.建立DataGridView,绑定数据源
2.将Combobox及DateTimePicker添加到DataGridView控件集合中
3.相关事件,单元格切换触发,显示下拉框及时间控件,Current...
1. DataGridView中使用时间控件作为列类型
DataGridView中默认不提供DateTimePicker类型的列类型,因此可以通过控件的覆盖模拟所需的功能。详细步骤如下:
第一步,将DataGridView单元格设置为DataGridViewTextBoxColumn类型(文本单元格);
第二步,创建一个DateTimePicker控件dateTimePicker1(时间控件...
DataGridView 控件提供用于显示数据的可自定义表。类 DataGridView 允许通过使用属性(如 DefaultCellStyle、 ColumnHeadersDefaultCellStyle、 CellBorderStyle和)自定义单元格、行、列和 GridColor边框。有关详细信息,请参阅微软 DataGridView 控件中的基本格式设置和样式设置。可以使用 DataGridView 控件在基础数据源中或不使用基础数据源显示数据。
DataSet ds = new DataSet();
ds = module.GetInStockInfo(); //获取ds数据源的方法
this.DataGridView.DataSource = ds.Tables[0];
2、两个DateTimePicker控件值得比较
DateTime.Compare(this.dtpstartData.Value, this...
//页面加载时初始化DatePacker
DateTimePicker dmg = new DateTimePicker();
private void DefectiveDealInsert_Load(object sender, EventArgs e) { dmg.CustomFormat = "yyyy-MM-d...
由于DataGridView自带的ColumnType里面没有DateTimePicker这个控件。所以要实现一个输入日期的列就比较麻烦了。通过以下方法可以往DataGridView加入DateTimePicker控件。
首先,前端设计加入一个DataGridView控件,命名为DataGridView1。
然后,后台.cs文件写入以下代码:
using System;
using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Data;using System.Text;using System.Windows.Forms;using System.Drawing.Design;namespace Da
3、定义表格列,继承自DataGridViewColumn,定义要设置的属性,在构造函数中设置CellTemplate属性为上一步定义的单元格的实例。2、定义单元格,继承自DataGridViewTextBoxCell,重写属性EditType(返回上一步定义的控件类型)、ValueType(返回要编辑值的类型)、DefaultNewRowValue(返回要编辑值的默认值)以及方法InitializeEditingControl(获取上一步定义的单元格编辑控件的实例,并设置实例相关属性)
说到这个标题,有人可能认为我解决了这个问题。我要说的是,到目前为止,本人上没有直接解决。
今天有朋友问我怎么设置DateTimePicker控件下拉显示的日历的第一列为周一,而不是默认的周日。乍一看,很简单,设置FirstDayOfWeek就解决了嘛。于是去找控件的这个属性,咦?没有!再看看有没有对应的方法,还是没有!
上网搜索,发现csdn上也有几个类似的问题贴,大致...