【问题标题】:Custom DataGridView Column that implements IDataGridViewEditingCell but also has an editing control?实现 IDataGridViewEditingCell 但也具有编辑控件的自定义 DataGridView 列?
【发布时间】:2013-01-21 12:35:18
【问题描述】:

我即将开始开发自定义日历列。我设计了一个实现IDataGridViewEditingCell 的列,之前它允许用户编辑内容,而单元格不必先进入编辑模式(是一个弹出编辑框)。

对于我的日历列,如果用户单击将与单元格右侧对齐的日历图标,我希望拥有此功能,这将弹出一个不同的控件,因此单元格无需移动进入编辑模式,从而减少用户必须经过的点击次数。

但是,如果用户想输入日期,我也希望用户能够自己输入单元格(因为打字员通常更快),在这种情况下,单元格将需要进入编辑模式, 并为用户提供适当的编辑控件。

有关此接口的 MSDN 文档说明如下:

此接口由诸如 DataGridViewCheckBoxCell 之类的类实现,这些类派生自 DataGridViewCell 并提供用于指定值的用户界面 (UI),而无需承载编辑控件。无论单元格是否处于编辑模式,都会显示这种情况下的 UI。

其他单元格类型,例如 DataGridViewButtonCell,提供 UI,但不存储用户指定的值。在这种情况下,单元格类型不实现 IDataGridViewEditingCell 或承载编辑控件。

当单元格处于编辑模式时显示编辑控件的单元格类型,例如 DataGridViewTextBoxCell,不实现 IDataGridViewEditingCell,而是提供实现 IDataGridViewEditingControl 的伴随类。例如,DataGridViewTextBoxCell 提供了一个派生自 TextBox 控件并实现 IDataGridViewEditingControl 的 DataGridViewTextBoxEditingControl。在这种情况下,单元格的 EditType 属性设置为表示编辑控件类型的 Type 对象。

对我来说,这意味着一个单元格不能实现这个接口并且承载一个编辑控件。

有没有人遇到过这种情况,我有什么选择?

【问题讨论】:

  • 如果你能分享你的代码,那将为我们增加一些线索:)
  • 目前还没有代码,我想在我深入之前先问一下。

标签: c# .net winforms datagridview


【解决方案1】:

我从这个文档中收集到的是,在实现IDataGridViewEditingCell 时,单元格是 编辑控件。要获得所需的功能,您必须创建一个 DataGridViewCalendarCell 和一个关联的DataGridViewCalendarEditingControl,该列中的所有单元格都可以共享它们。您可能还需要创建一个DataGridViewCalendarColumn。

【讨论】:

  • 是的,我意识到我还需要一个专栏。 IDataGridViewEditingCell 接口是为简单的交互而设计的,而不是像允许用户在单元格中键入一样的东西。我想我将使用标准编辑控件并尝试在用户单击日历图标时强制单元格进入编辑模式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 2016-08-07
  • 1970-01-01
相关资源
最近更新 更多