• Winfrom学习(六)--dataGridView中增加时间控件


    参考链接:https://blog.csdn.net/qiume/article/details/6646506

    1、添加类

     //日期列
        public class CalendarColumn : DataGridViewColumn
        {
            public CalendarColumn() : base(new CalendarCell())
            {
            }
    
            public override DataGridViewCell CellTemplate
            {
                get
                {
                    return base.CellTemplate;
                }
                set
                {
                    // Ensure that the cell used for the template is a CalendarCell.
                    if (value != null &&
                        !value.GetType().IsAssignableFrom(typeof(CalendarCell)))
                    {
                        throw new InvalidCastException("Must be a CalendarCell");
                    }
                    base.CellTemplate = value;
                }
            }
    
            public class CalendarCell : DataGridViewTextBoxCell
            {
    
                public CalendarCell()
                    : base()
                {
                    // Use the short date format.
                    this.Style.Format = "d";
                }
    
                public override void InitializeEditingControl(int rowIndex, object
                    initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
                {
                    // Set the value of the editing control to the current cell value.
                    base.InitializeEditingControl(rowIndex, initialFormattedValue,
                        dataGridViewCellStyle);
                    CalendarEditingControl ctl =
                        DataGridView.EditingControl as CalendarEditingControl;
                    ctl.Value = (DateTime)this.Value;
                }
    
                public override Type EditType
                {
                    get
                    {
                        // Return the type of the editing contol that CalendarCell uses.
                        return typeof(CalendarEditingControl);
                    }
                }
    
                public override Type ValueType
                {
                    get
                    {
                        // Return the type of the value that CalendarCell contains.
                        return typeof(DateTime);
                    }
                }
    
                public override object DefaultNewRowValue
                {
                    get
                    {
                        // Use the current date and time as the default value.
                        return DateTime.Now;
                    }
                }
            }
    
            class CalendarEditingControl : DateTimePicker, IDataGridViewEditingControl
            {
                DataGridView dataGridView;
                private bool valueChanged = false;
                int rowIndex;
    
                public CalendarEditingControl()
                {
                    this.Format = DateTimePickerFormat.Short;
                }
    
                // Implements the IDataGridViewEditingControl.EditingControlFormattedValue 
                // property.
                public object EditingControlFormattedValue
                {
                    get
                    {
                        return this.Value.ToShortDateString();
                    }
                    set
                    {
                        String newValue = value as String;
                        if (newValue != null)
                        {
                            this.Value = DateTime.Parse(newValue);
                        }
                    }
                }
    
                // Implements the 
                // IDataGridViewEditingControl.GetEditingControlFormattedValue method.
                public object GetEditingControlFormattedValue(
                    DataGridViewDataErrorContexts context)
                {
                    return EditingControlFormattedValue;
                }
    
                // Implements the 
                // IDataGridViewEditingControl.ApplyCellStyleToEditingControl method.
                public void ApplyCellStyleToEditingControl(
                    DataGridViewCellStyle dataGridViewCellStyle)
                {
                    this.Font = dataGridViewCellStyle.Font;
                    this.CalendarForeColor = dataGridViewCellStyle.ForeColor;
                    this.CalendarMonthBackground = dataGridViewCellStyle.BackColor;
                }
    
                // Implements the IDataGridViewEditingControl.EditingControlRowIndex 
                // property.
                public int EditingControlRowIndex
                {
                    get
                    {
                        return rowIndex;
                    }
                    set
                    {
                        rowIndex = value;
                    }
                }
    
                // Implements the IDataGridViewEditingControl.EditingControlWantsInputKey 
                // method.
                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 false;
                    }
                }
    
                // Implements the IDataGridViewEditingControl.PrepareEditingControlForEdit 
                // method.
                public void PrepareEditingControlForEdit(bool selectAll)
                {
                    // No preparation needs to be done.
                }
    
                // Implements the IDataGridViewEditingControl
                // .RepositionEditingControlOnValueChange property.
                public bool RepositionEditingControlOnValueChange
                {
                    get
                    {
                        return false;
                    }
                }
    
                // Implements the IDataGridViewEditingControl
                // .EditingControlDataGridView property.
                public DataGridView EditingControlDataGridView
                {
                    get
                    {
                        return dataGridView;
                    }
                    set
                    {
                        dataGridView = value;
                    }
                }
    
                // Implements the IDataGridViewEditingControl
                // .EditingControlValueChanged property.
                public bool EditingControlValueChanged
                {
                    get
                    {
                        return valueChanged;
                    }
                    set
                    {
                        valueChanged = value;
                    }
                }
    
                // Implements the IDataGridViewEditingControl
                // .EditingPanelCursor property.
                public Cursor EditingPanelCursor
                {
                    get
                    {
                        return base.Cursor;
                    }
                }
    
                protected override void OnValueChanged(EventArgs eventargs)
                {
                    // Notify the DataGridView that the contents of the cell
                    // have changed.
                    valueChanged = true;
                    this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
                    base.OnValueChanged(eventargs);
                }
    
            }
        }

    2、使用时添加列

    //添加事件列
                    CalendarColumn col = new CalendarColumn();
                    col.HeaderText = "预计归还时间";
                    col.DefaultCellStyle.Format = "yyyy-MM-dd";
                    col.FillWeight = 15;
                    dataGridView1.Columns.Add(col);
  • 相关阅读:
    Swap Nodes in Pairs
    Remove Nth Node From End of List
    Rotate list
    历届试题_DNA比对
    斐波那契字符串_KMP
    字符串的模式匹配
    理解图像Garbor和HOG特征的提取方法及实例应用
    人眼定位和基于人眼的人脸姿态矫正_转载
    借助百度云API进行人脸识别
    { "result": null, "log_id": 304592860300941982, "error_msg": "image check fail", "cached": 0, "error_code": 222203, "timestamp": 1556030094 }
  • 原文地址:https://www.cnblogs.com/webttt/p/14863591.html
Copyright © 2020-2023  润新知