由于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类型(文本单元格);
第二步,创建一个DateTimePickerdateTimePicker1(时间件...
                                    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上也有几个类似的问题贴,大致...