【问题标题】:C# - Help with Customised DatagridView Cell OptionsC# - 帮助自定义 DatagridView 单元格选项
【发布时间】:2009-04-15 17:03:28
【问题描述】:

我正在尝试自定义 DataGridView 单元格以包含组合框和 一个文本字段。到目前为止 myCell 类派生自 DataGridViewTextBoxCell 班级。 我的班级有一个 Combobox 作为私人成员,但我不确定我是如何 可以渲染它。我正在覆盖疼痛方法,但我不知道如何 绘制组合框。我将其位置设置为 单元格及其大小等于 cellBounds 大小。我知道如果我是 在表单上创建一个组合框我必须将它添加到我的表单中 例如,控制列表,所以它会被绘制,但在这种情况下,我 真的不知道该怎么做。

注意:我没有使用任何类型的 sql db。

理想情况下,我会在单元格的上半部分显示一个组合框 和我单元格下半部分的文本框,用户可以在其中更改 运行时的文本。

有谁知道实现这一目标的最佳方法?

谢谢。

【问题讨论】:

  • 顺便说一句。我喜欢 Pain() 方法:)

标签: c# .net winforms datagridview


【解决方案1】:

我会尝试从 IDataGridViewEditingControl 和自定义 UserControl 派生,它具有您的要求(TextBox 和 ComboBox)。
但是检查一下,如果 ComboBox 本身还不够。根据 DropDownStyle,您的用户已经可以更改 ComboBox 的内容。

【讨论】:

  • 感谢您的回复。我创建了一个 NewColumn 类、一个 NewCell 类(从 DataGridViewTextBoxCell 派生)和一个包含组合框和文本框的 userControl。为什么你提到从 IDataGridViewEditingControl 派生 newCell?我仍然看不到正在绘制的用户控件。
  • 好吧,至少在编辑模式下你应该看到自定义的用户控件。单元格本身仍然必须绘制(假装)有一个组合框+一个文本框。也许mono implementation 对您有帮助?
  • 我创建了一个派生自 myUserControl 和 IDataGridViewEditingControl 的 EditingControl,并添加了覆盖函数,如您发送的示例所示。我现在可以看到我的控件(尽管我必须单击单元格或键入一些内容才能显示它):) 在调整大小时它没有正确重新绘制它......无论如何,这是一个很好的起点,谢谢!
  • 刚刚注意到 InitializeEditingControl() 负责在单元格上显示我的用户控件,但只有在我单击单元格时才会调用它。在我添加一个换行符之后调用它,因为它说单元格的状态不正确。有什么想法可以解决这个问题吗?关于调整大小,调用 editControl.Invalidate() 不会重绘我的用户控件......肯定还有其他事情需要做,不是吗?
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
相关资源
最近更新 更多