如何在datagridview中添加时间列?
在Winform 中的一Datagridview中我希望在要输入日期的列输入日期时不用自己输入,最好是双击此单元格就会弹出一个日历然后选择日期的形式的。

解决方案 »

  1.   

    准备工作:
    继承MonthCalendar,修改其构造函数
        public class MC : MonthCalendar
        {
            public DataGridViewCell cell = null;
            public MC(DataGridViewCell c)
            {
                cell = c;
            }
        }第一步:
    在dataGridView1_CellDoubleClick事件中完成
                    MC mc = new MC(dataGridView1[e.ColumnIndex,e.RowIndex]);
                    mc.Show();
                    mc.DateSelected += new DateRangeEventHandler(monthCalendar1_DateSelected);
                    dataGridView1.Controls.Add(mc);
     第二步:
    设计MC控件的日期选择
            private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
            {
                MC m = (MC)sender;
                DateTime d1, d2;
                d1 = m.SelectionStart;
                d2 = m.SelectionEnd;
                if(d1.Equals(d2))
                    m.cell.Value=d1.ToLongDateString();
                else
                    m.cell.Value=d1.ToLongDateString()+"-"+d2.ToLongDateString();
                dataGridView1.Controls.Remove(m);
                dataGridView1.Refresh();
                m.Dispose();
                m = null;
            }
    完毕,给分
      

  2.   

    DataGridView增加日期/时间列
    在Edit Columns窗口中可以选择ColumnType为新增加的列类型CalendarColumn 
    参考
      

  3.   


    准备工作: 
    继承MonthCalendar,修改其构造函数 
        public class MC : MonthCalendar 
        { 
            public DataGridViewCell cell = null; 
            public MC(DataGridViewCell c) 
            { 
                cell = c; 
            } 
        } 第一步: 
    在dataGridView1_CellDoubleClick事件中完成 
                    MC mc = new MC(dataGridView1[e.ColumnIndex,e.RowIndex]); 
                    mc.Show(); 
                    mc.DateSelected += new DateRangeEventHandler(monthCalendar1_DateSelected); 
                    dataGridView1.Controls.Add(mc); 
    第二步: 
    设计MC控件的日期选择 
            private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e) 
            { 
                MC m = (MC)sender; 
                DateTime d1, d2; 
                d1 = m.SelectionStart; 
                d2 = m.SelectionEnd; 
                if(d1.Equals(d2)) 
                    m.cell.Value=d1.ToLongDateString(); 
                else 
                    m.cell.Value=d1.ToLongDateString()+"-"+d2.ToLongDateString(); 
                dataGridView1.Controls.Remove(m); 
                dataGridView1.Refresh(); 
                m.Dispose(); 
                m = null; 
            } 引用#1给分
      

  4.   

    上午我才做这个呢,呵呵教你如何在datagridview里做日期列