0

我已经继承datagridcolumnstyle并且在 Paint 函数中我需要根据正在渲染的行中的单元格做一些事情。

例如,我有以下内容:

row 1: color1, name, last name
row 2: color2, name2, last name2
row 3: color3, name3, last name3

name 和 last name 列需要使用颜色列中定义的颜色进行绘制。

因此,当datagridcolumnstyle绘制与 name2 相关的内容时,我需要能够执行以下操作:

protected override void Paint( Graphics g, Rectangle bounds, CurrencyManager source, int rowNum, Brush backBrush, Brush foreBrush, bool alignToRight )
{
Color color = (Color)GetRow( rowNum ).GetCell(color1).Value;
}
4

2 回答 2

1

DataGridColumnStyle我使用过的简单解决方案是在创建自定义对象时将对拥有的 DatGrid 的引用传递给您的自定义对象。这可以通过构造函数或属性来完成。然后您可以在Paint.

于 2012-07-31T13:54:42.237 回答
1

我不知道这是什么或如何让它工作,但这里是 Microsoft 的DataGridColumnStyle 类示例中显示的示例:

protected override void Paint(Graphics g, Rectangle bounds, CurrencyManager source, int rowNum,
    Brush backBrush, Brush foreBrush, bool alignToRight) {
  DateTime date = (DateTime)GetColumnValueAtRow(source, rowNum);
  Rectangle rect = bounds;
  g.FillRectangle(backBrush, rect);
  rect.Offset(0, 2);
  rect.Height -= 2;
  g.DrawString(date.ToString("d"), this.DataGridTableStyle.DataGrid.Font, foreBrush, rect);
}

基于那段代码,我想说这个工具的原因是从提供的坐标处的单元格中读取值并根据该值更改颜色。

因此,如果该值无效,您可以将单元格涂成红色。

如果该值未保存,您可以将字体设置为粗体。

但是,我发布的示例非常不适用于 Windows Mobile!

于 2012-07-30T02:02:45.160 回答