【问题标题】:How do I conditionally change a datagridview's cell format in WinForms?如何在 WinForms 中有条件地更改 datagridview 的单元格格式?
【发布时间】:2014-02-12 22:32:53
【问题描述】:

在我的表单加载事件中,我有一个添加到 BindingSource 的对象列表。我在加载事件中调用的最后一行代码是:

dataGridView1.DataSource = bindingSource;

我尝试使用 dataGridView1_CellPainting 事件和 dataGridView1_CellFormatting 事件更改单元格格式。两个事件都没有被调用。

谢谢

【问题讨论】:

  • 你想用它做什么?
  • 对不起。更改背景颜色。
  • 似乎我的 CellPainting 事件没有被引发。
  • 你订阅了它,无论是设计还是代码?

标签: c# winforms


【解决方案1】:

为了从网格接收CellPainting 事件,您必须订阅它。这可以在表单设计器或代码中完成。请参阅this link 了解更多信息。

【讨论】:

    【解决方案2】:

    值得注意的是,您可以通过使用DefaultCellStyle 属性来处理更改颜色和其他单元格样式功能。这可以应用于网格级别、行级别、列级别,一直到单个单元格级别。这是一张很好的图片,展示了样式是如何继承的:

    如果可能,最好在层次结构的最高级别应用一种样式,并将其继承到单元格。这与您要避免使用 CellPaintingCellFormatting 事件为单元格着色的原因相同;您正在处理每个单元格的事件,并且可以更有效地完成。对于小型数据集或简单网格,您可能不会注意到它,但如果您需要扩展,它会减慢您的速度。当您需要应用自定义格式或单元格绘制方式时使用这些事件,但对于着色,您可以更有效。请参阅Best Practices Cell Styling 了解更多信息。

    根据给出的信息,您似乎正在尝试将单元格颜色应用于网格发布数据绑定的自动生成的列。我对您的建议是使用上述技术在 DataBindingComplete 事件中设置您的 DataGrid 样式。您可以在此处使用最新绑定数据应用您的条件样式,并避免在CellPainting 中过度处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-03
      • 2017-07-03
      • 2010-11-02
      • 2013-05-22
      • 2015-09-14
      • 2013-10-23
      • 1970-01-01
      相关资源
      最近更新 更多