1. DataGridView中使用时间控件作为列类型

DataGridView中默认不提供DateTimePicker类型的列类型,因此可以通过控件的覆盖模拟所需的功能。详细步骤如下:

第一步 ,将DataGridView单元格设置为DataGridViewTextBoxColumn类型(文本单元格);

第二步 ,创建一个DateTimePicker控件dateTimePicker1(时间控件),Visible属性设置为false;

第三步 ,将时间控件的坐标设置为对应文本单元格的 坐标

第四步 ,若文本单元格原来为空,则时间控件设置为当前时间,若有值,则时间控件Value属性设置为其值;

第五步 ,dateTimePicker1的 ValueChanged 事件和 Leave 事件的处理。

下面是第三步和第四步的代码:

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    // 设置坐标
    this.dateTimePicker1.Left = this.dataGridView1.Left + this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).X;
    this.dateTimePicker1.Top = this.dataGridView1.Top + this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Y;
    if (this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == null || this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString() == "")
        this.dateTimePicker1.Value = DateTime.Now;
        this.dateTimePicker1.Visible = true;
        this.dateTimePicker1.Value = Convert.ToDateTime(this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value);
        this.dateTimePicker1.Visible = true;
}
第五步的代码:
private void dateTimePicker1_Leave(object sender, EventArgs e)
    this.dateTimePicker1.Visible = false;
    //this.dataGridView1.CurrentCell.Value = this.dateTimePicker1.Value;
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
    //this.dateTimePicker1.Visible = false;
    this.dataGridView1.CurrentCell.Value = this.dateTimePicker1.Value;

2. DataGridView中实现DataGridViewComboBoxColumn的自动匹配

这里假定已经设置了DataGridViewComboBoxColumn列的DataSource,则只需在dataGridView的EditingControlShowing事件中添加相关处理逻辑。

// 显示用于编辑单元格的控件时触发
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl))
        //((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown;
        ComboBox cbo = e.Control as ComboBox;
        cbo.DropDownStyle = ComboBoxStyle.DropDown;
        cbo.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        // 可能导致绑定多个监听函数,重复执行
        //cbo.SelectedValueChanged += new EventHandler(cbo_SelectedValueChanged);
        //Console.WriteLine(cbo.SelectedText);
void cbo_SelectedValueChanged(object sender, EventArgs e)
    // TODO

注意:cbo.DropDownStyle = ComboBoxStyle.DropDown;不能设置为DropDownList,否则无法输入。若要求输入不能是列表之外的项,则需要设置DisplayMember和ValueMember属性。比如 ,显示 张三、李四,ValueMember保存用户id 1 2。名字是可以重复的,id是唯一的。程序判断id,用户看到的是名字。当把二者设为同一列(如上述的名字列),就相当于输入的与列表中的值比较,若无匹配则控件会自动清空。

3. DataGridView自动滚动到最新的记录

代码如下:

// 滚动条滚动到最后
if (this.dataGridView1.Rows.Count >= 1)
    this.dataGridView1.FirstDisplayedScrollingRowIndex = this.dataGridView1.Rows.Count - 1;
                    1. DataGridView中使用时间控件作为列类型DataGridView中默认不提供DateTimePicker类型的列类型,因此可以通过控件的覆盖模拟所需的功能。详细步骤如下:第一步,将DataGridView单元格设置为DataGridViewTextBoxColumn类型(文本单元格);第二步,创建一个DateTimePicker控件dateTimePicker1(时间控件
				
由于时间原因,再加之自己懒惰!好久没写博客了,今天写一篇关于datagridview中如何实现时间控件的文章,算是继续自己的记录的习惯!   首先,我们知道datagridview中并不提供控件,因此,我们无法直接使用!对此我们可以进行如下操作,从而实现在datagridview中插入时间控件。 一、声明控件   我们首先要做的便是声明一个时间控件,这个不必详细多说了,有两种方式: DateTime now = DateTime.Now; DateTime firstDay = new DateTime(now.Year, now.Month, 1); DateTime lastDay = firstDay.AddMonths(1).AddDays(-1); 计算两个日期差多少天 DateTime start=firstDa...
public double DiffSeconds(DateTime startTime,DateTime endTime){ TimeSpan secondSpan=new TimeSpan(endTime.Ticks-startTime.Ticks); return secondSpand.TotalSeconds; 2、相差分钟 public double DiffMinutes(DateTime startTime,DateTime endTime){
在VS2005的datagridview的单元格中,可以设置单元格的下来方式为文本格式,下拉框格式,等,但是没有单元格的下拉,贴出代码让大家参考一下:  private void bibie_Load(object sender, EventArgs e)             status(true);             dmg.Value = System.
acCode = new DataGridViewTextBoxColumn(); //添加列 acCode.Name = "起始时间"; acCode.DataPropertyName = "起始时间"; acCode.HeaderText = "起始时间"...
private void dgvInfoPerson_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) if (dgvInfoPerson.CurrentCellAddress.X == dgvInfoPerson.Columns["col
C#Winform的DataGridView控件使用详解1DataGirdView控件Column类型DataGirdView控件基础设置DataGirdView控件行列操作 在展示和处理二维数据时,我们常常会想起Excel。但是使用Excel自带的各种函数处理较为繁琐的步骤时显得略显吃力,如果使用Excel自带宏编程,可能会对VB语言不甚熟悉或是感觉不nice。这个时候,熟悉C#编程语言的你,就需要用到DataGridView控件,设计一款二维数据处理利器。此处,我们开始进入对DataGridView摸索