自定义DataGridView列,实现IDataGridViewEditingCell,但也有一个编辑控件
本文关键字:有一个 编辑 控件 IDataGridViewEditingCell DataGridView 实现 自定义 | 更新日期: 2023-09-27 17:54:44
我即将开始开发一个自定义日历列。我设计了一个实现IDataGridViewEditingCell
的列,允许用户编辑内容,而不需要单元格首先进入编辑模式(是一个弹出式编辑框)。
对于我的日历列,我想有这个功能,如果用户点击日历图标,将对齐到单元格的右边,这将弹出一个不同的控件,这样就不需要单元格进入编辑模式,从而减少了用户必须经过的点击次数。
然而,我也希望用户能够输入到单元格本身,如果他们想要输入日期(因为它通常更快的打字员),在这种情况下,单元格将需要进入编辑模式,并给使用适当的编辑控件。
MSDN文档中关于这个接口的声明如下:
这个接口是由诸如DataGridViewCheckBoxCell之类的类实现的,这些类派生自DataGridViewCell,并提供一个用户界面(UI)来指定值,而不承载编辑控件。在这种情况下,无论单元格是否处于编辑模式,都会显示UI。
其他单元格类型,如DataGridViewButtonCell,提供UI,但不存储用户指定的值。在这种情况下,单元格类型不实现IDataGridViewEditingCell或承载编辑控件。
当单元格处于编辑模式时显示编辑控件的单元格类型,如DataGridViewTextBoxCell,不实现IDataGridViewEditingCell,而是提供一个实现IDataGridViewEditingControl的同伴类。例如,DataGridViewTextBoxCell提供了一个DataGridViewTextBoxEditingControl,它派生自TextBox控件并实现了IDataGridViewEditingControl。在本例中,单元格EditType属性被设置为表示编辑控件类型的Type对象。
对我来说,这意味着单元格不能实现这个接口和承载编辑控件。
有没有人有这种情况的经验,我有什么选择?
我从这个文档中收集到的是,在实现IDataGridViewEditingCell
时,单元格是编辑控件。为了获得你想要的功能,你必须创建一个DataGridViewCalendarCell和一个相关的DataGridViewCalendarEditingControl
,由列中的所有单元格共享。您可能还需要制作一个DataGridViewCalendarColumn
。