zoukankan      html  css  js  c++  java
  • Csharp DataGridView自定义添加DateTimePicker控件日期列

       /// <summary>
        /// DataGridView自定义添加DateTimePicker控件日期列 参考http://msdn.microsoft.com/en-us/library/7tas5c80.aspx
        /// 涂聚文 缔友计算机信息技术有限公司
        /// 2011-11-16 捷为工作室
        /// </summary>
        public class GeovinDuCalendarColumn : DataGridViewColumn
        {
            /// <summary>
            /// 
            /// </summary>
            public GeovinDuCalendarColumn()
                : base(new CalendarCell())
            {
            }
            /// <summary>
            /// 
            /// </summary>
            public override DataGridViewCell CellTemplate
            {
                get
                {
                    return base.CellTemplate;
                }
                set
                {
                 
                    if (value != null &&
                        !value.GetType().IsAssignableFrom(typeof(CalendarCell)))
                    {
                        throw new InvalidCastException("Must be a CalendarCell");
                    }
                    base.CellTemplate = value;
                }
            }
        }
        /// <summary>
        /// DataGridView 添加日期列
        /// 涂聚文 缔友计算机信息技术有限公司
        /// 2011-11-16 捷为工作室
        /// </summary>
        public class CalendarCell : DataGridViewTextBoxCell
        {
    
            public CalendarCell()
                : base()
            {
            
                this.Style.Format = "d";
            }
    
            public override void InitializeEditingControl(int rowIndex, object
                initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
            {
      
                base.InitializeEditingControl(rowIndex, initialFormattedValue,
                    dataGridViewCellStyle);
                CalendarEditingControl ctl =
                    DataGridView.EditingControl as CalendarEditingControl;
          
                if (this.Value == null)
                {
                    ctl.Value = (DateTime)this.DefaultNewRowValue;
                }
                else
                {
                    ctl.Value = (DateTime)this.Value;
                }
            }
    
            public override Type EditType
            {
                get
                {
                  
                    return typeof(CalendarEditingControl);
                }
            }
    
            public override Type ValueType
            {
                get
                {
                  
    
                    return typeof(DateTime);
                }
            }
    
            public override object DefaultNewRowValue
            {
                get
                {
                
                    return DateTime.Now;
                }
            }
        }
        /// <summary>
        ///DataGridView 添加日期列
        /// 涂聚文 缔友计算机信息技术有限公司
        /// 2011-11-16 捷为工作室
        /// </summary>
        class CalendarEditingControl : DateTimePicker, IDataGridViewEditingControl
        {
            DataGridView dataGridView;
            private bool valueChanged = false;
            int rowIndex;
    
            public CalendarEditingControl()
            {
                this.Format = DateTimePickerFormat.Short;
            }
    
    
            public object EditingControlFormattedValue
            {
                get
                {
                    return this.Value.ToShortDateString();
                }
                set
                {
                    if (value is String)
                    {
                        try
                        {
    
                            this.Value = DateTime.Parse((String)value);
                        }
                        catch
                        {
                  
                            this.Value = DateTime.Now;
                        }
                    }
                }
            }
    
    
            public object GetEditingControlFormattedValue(
                DataGridViewDataErrorContexts context)
            {
                return EditingControlFormattedValue;
            }
    
    
            public void ApplyCellStyleToEditingControl(
                DataGridViewCellStyle dataGridViewCellStyle)
            {
                this.Font = dataGridViewCellStyle.Font;
                this.CalendarForeColor = dataGridViewCellStyle.ForeColor;
                this.CalendarMonthBackground = dataGridViewCellStyle.BackColor;
            }
    
     
            public int EditingControlRowIndex
            {
                get
                {
                    return rowIndex;
                }
                set
                {
                    rowIndex = value;
                }
            }
    
    
            public bool EditingControlWantsInputKey(
                Keys key, bool dataGridViewWantsInputKey)
            {
                // Let the DateTimePicker handle the keys listed.
                switch (key & Keys.KeyCode)
                {
                    case Keys.Left:
                    case Keys.Up:
                    case Keys.Down:
                    case Keys.Right:
                    case Keys.Home:
                    case Keys.End:
                    case Keys.PageDown:
                    case Keys.PageUp:
                        return true;
                    default:
                        return !dataGridViewWantsInputKey;
                }
            }
    
    
            public void PrepareEditingControlForEdit(bool selectAll)
            {
                // No preparation needs to be done.
            }
    
    
            public bool RepositionEditingControlOnValueChange
            {
                get
                {
                    return false;
                }
            }
    
    
            public DataGridView EditingControlDataGridView
            {
                get
                {
                    return dataGridView;
                }
                set
                {
                    dataGridView = value;
                }
            }
    
    
            public bool EditingControlValueChanged
            {
                get
                {
                    return valueChanged;
                }
                set
                {
                    valueChanged = value;
                }
            }
    
    
            public Cursor EditingPanelCursor
            {
                get
                {
                    return base.Cursor;
                }
            }
    
            protected override void OnValueChanged(EventArgs eventargs)
            {
    
                valueChanged = true;
                this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
                base.OnValueChanged(eventargs);
            }
        }
    

     调用:

                //dataGridView1.Columns[3].HeaderText = "入職日期";
                GeovinDuCalendarColumn col = new GeovinDuCalendarColumn();
                this.dataGridView1.Columns.Insert(3,col);
                col.HeaderText = "入職日期";
    
     /// <summary>
            /// 设置默认值
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
            {
                if (dataGridView1.Rows.Count >= 1) //设定默认日期
                {
                    this.dataGridView1.Rows[e.RowIndex].Cells[2].Value = "20E8C162-C09C-4F7A-9C97-0CA50E201F6B";
                    this.dataGridView1.Rows[e.RowIndex].Cells[3].Value = DateTime.Now;
                    this.dataGridView1.Rows[e.RowIndex].Cells[4].Value = "C50E08D5-7529-4F86-966E-9497AD67EA0C";
                }
            }
    
    哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)成功.---Geovin Du(涂聚文)
  • 相关阅读:
    命令行获取当前日期及时间
    Nginx配置性能优化
    一些查看网络连接的命令
    Python 3.5源码编译安装
    Node.js 安装配置
    NFS服务器配置文档
    Linux服务器SSH免密互访
    LVM逻辑卷管理命令
    Zabbix客户端安装
    CentOS 7网卡网桥、绑定设置
  • 原文地址:https://www.cnblogs.com/geovindu/p/2251075.html
Copyright © 2011-2022 走看看