日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DataGridView控件内建立日期选择编辑列

發布時間:2025/7/14 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataGridView控件内建立日期选择编辑列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

兩個文件:

?

CalendarColumn 類:

  • 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;??
  • ????????????}??
  • ????????}??
  • ????} ?
  • **********************************************************************

    CalendarCell 類:

  • 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;??
  • ????????????if?(this.Value?==?null)??
  • ????????????????ctl.Value?=?DateTime.Now;??
  • ????????????else??
  • ????????????????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);??
  • ????????}??
  • ????} ?
  • *****************************************************************

    調用,和DataGridViewTextBoxColumn一樣

    ??? private CalendarColumn awardsDate;

    ??? this.awardsDate = new CalendarColumn();

    ??? this.awardsDate.DataPropertyName = "awardsDate";
    ??? this.awardsDate.HeaderText = "頒獎日期";
    ??? this.awardsDate.Name = "awardsDate";

    ??? this.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
    ??????????? this.awardsDate});

    ?

    可以新增、賦值、編輯該列。

    ?

    轉載于:https://www.cnblogs.com/wanzhongjun/p/6250073.html

    總結

    以上是生活随笔為你收集整理的DataGridView控件内建立日期选择编辑列的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。