我继承了datagridcolumnstyle
,在Paint函数中,我需要根据正在渲染的行中的单元格做一些事情。
例如,我有以下内容:
row 1: color1, name, last name
row 2: color2, name2, last name2
row 3: color3, name3, last name3
名称和姓氏列需要使用颜色列中定义的颜色进行绘制。
因此,当绘制与name2相关的datagridcolumnstyle
时,我需要能够执行以下操作:
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;
}
答案 0 :(得分:1)
我不知道这是什么或如何让它工作,但这是微软的DataGridColumnStyle Class示例中显示的示例:
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!
答案 1 :(得分:1)
我使用的简单解决方案是在创建时将对拥有的DatGrid的引用传递给自定义DataGridColumnStyle
对象。这可以通过构造函数或通过属性完成。然后,您可以在Paint
期间访问整行。