Csharp DataGridView自定义添加DateTimePicker控件日期列

简介: /// <summary> /// DataGridView自定义添加DateTimePicker控件日期列 参考http://msdn.microsoft.com/en-us/library/7tas5c80.aspx /// 涂聚文 缔友计算机信息技术有限公司 /// 2011-11-16 捷为工作室 /// </summary> public cla
/// <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";
           }
       }



目录
相关文章
|
数据采集 SQL 分布式计算
在数据清洗过程中,处理大量重复数据通常涉及以下步骤
【4月更文挑战第2天】在数据清洗过程中,处理大量重复数据通常涉及以下步骤
698 2
|
5月前
|
人工智能 文字识别 自然语言处理
金融行业RPA案例大全:银行_证券_保险全场景落地实践(附数据)
凌晨两点的金融城灯火通明,RPA“数字员工”正悄然变革行业。从银行对账到证券清算、保险理赔,重复工作被高效替代。实在智能的实在Agent作为第三代RPA,融合AI与大模型,实现智能决策与自主学习,助力金融机构降本增效,推动服务迈向智能化。
554 2
|
人工智能 Cloud Native 机器人
未来数据观丨中企出海,AI+ 云赋能
依托云计算和 AI 构建数字生态,正成为中国企业出海和全球化战略的必然路径和选择。
未来数据观丨中企出海,AI+ 云赋能
|
9月前
|
监控 前端开发 Java
如何开发设备管理系统中的设备巡检板块 ?(附架构图+流程图+代码参考)
设备巡检是设备管理系统中的关键模块,主要用于日常检查、故障预警和维修跟踪。通过科学管理巡检任务,企业可提升设备运行效率、延长使用寿命,并降低维护成本。本文详细解析设备巡检模块的开发流程、功能设计及实现技巧,涵盖技术架构、核心功能、业务流程和代码示例,帮助企业构建高效、稳定的设备巡检系统,实现数据驱动的设备管理决策。
|
前端开发 UED 开发者
React 悬浮按钮组件 FloatingActionButton
悬浮按钮(FAB)是常见的UI元素,用于提供突出的操作。本文介绍如何在React中使用Material-UI创建美观的FAB组件,涵盖基本概念、实现方法及常见问题解决。通过代码示例和优化技巧,帮助开发者提升用户体验,确保按钮位置、颜色、交互反馈等方面的表现,同时避免无障碍性和性能问题。
697 80
|
Web App开发 人工智能 物联网
操作系统的演变:从单一到多元,再到云端
在数字时代的浪潮中,操作系统(OS)作为计算机系统的核心,经历了从简单到复杂,再到云化的演变。本文将探讨操作系统的发展历程,包括早期的批处理系统、多道程序设计、分时系统的出现,以及现代操作系统的多样化和云端化趋势。我们将看到,随着技术的不断进步,操作系统不仅在性能上得到了提升,其设计理念和应用场景也发生了根本性的变化。
|
分布式计算 大数据 Hadoop
如何对大数据应用进行性能测试
如何对大数据应用进行性能测试
362 0
|
Cloud Native 前端开发 Java
技术人生第5篇——浅谈如何成为技术一号位?
认清每个人自己在日常工作中的思维定式非常重要,有助于转变自己对很多事情的认知,而这种转变也会从根本上带来行为上的变化。也就是说,可以通过理论分析和实践,来共同完成对个人实际生活的影响。今天这篇文章,我们会先讨论业务研发同学,或者说大多数的业务研发同学的自我认知是什么,再看下这种普遍的自我认知之内,是否已经存在着大家视而不见的思维定式;然后再讨论思维定式产生的原因是什么,如何突破这种由认知不到位而导致的自我束缚;最后再探讨业务研发同学应该存在什么样的认知,如何通过实践完成自己从普通开发到技术一号位的角色转变。
8985 76
技术人生第5篇——浅谈如何成为技术一号位?
|
缓存 Java 测试技术
Spring Boot中的性能测试与调优
Spring Boot中的性能测试与调优
一篇文章让你搞懂浮点数在内存中的存储机制[保姆级教学]
一篇文章让你搞懂浮点数在内存中的存储机制[保姆级教学]

热门文章

最新文章