2012-07-28 73 views
0

我继承了datagridcolumnstyle,在Paint函数中,我需要根据所渲染的行中的单元格做一些事情。在“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

我从来没有使用[DataGridColumnStyle类](http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridcolumnstyle(v = vs.71).aspx)。链接的示例不会在我拥有的任何WinMoble版本下构建。你有更好的参考?它是为了什么? – jp2code 2012-07-30 01:24:15

回答

1

我不知道这是什么或如何得到它的工作,但在这里

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); 
} 

基础上的代码片段,我会说这个工具的原因是读取从提供的坐标的单元格的值,并更改根据颜色:从微软的DataGridColumnStyle Class例子所示的例子那个价值。

因此,如果该值无效,可以绘制红色单元格。

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

但是,我发布的示例非常适合Windows Mobile!

1

简单的解决方案,我用过的一个方法是,在创建它时,将拥有DatGrid的引用传递到自定义的DataGridColumnStyle对象中。这可以通过构造函数或通过属性完成。然后您可以在Paint期间访问整行。

相关问题