(i为列,j为行)如果 值>8,然后,改变这些行的Forecolor和Backcolor 以下是我程序中部分代码 If i = 5 Then For j = 0 To tb.Rows.Count - 1 If (tb.Rows(j)(i)) > 8 Then '//这里如何写 End If Next End If
'该类的主要作用除了上文所说的重载Paint外,最主要的目标在于如何将用户的要求(cell的位置,cell的背景色、前景色)保存下来,
' 在绘制textbox的时候传递进Paint函数中去
Public Class DataGridColoredTextBoxColumn '定义继承类
Inherits DataGridTextBoxColumn '继承接口
Public rowcollection As New Collection '用于存放行号的集合也就是要更改颜色的行号,列号是gridcolumnstyle中自带的故可绘制出每一个cell的颜色.
Public BackColor() As Color '用于存放背景色的集合,索引与行号集号一致(集合索引减1)
Public ForeColor() As Color '用于存放前景色的集合,索引与行号集号一致 也就是说其索引对应的颜色值与行号集合同样索引号的行向对应
'也就是说将颜色应用到与其有相同索引号的行号中..
'汗....
Private Function GetText(ByVal Value As Object) As String
'为进行重绘读出textbox中的内容,这个函数是增加容错能力的,与实现机制无关
If TypeOf (Value) Is System.DBNull Then
Return NullText
ElseIf Value Is Nothing Then
Return ""
Else
Return Value.ToString
End If
End Function
Protected Overloads Overrides Sub Paint(ByVal g As System.Drawing.Graphics, ByVal bounds As System.Drawing.Rectangle, ByVal source As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer, ByVal backBrush As System.Drawing.Brush, ByVal foreBrush As System.Drawing.Brush, ByVal alignToRight As Boolean)
Dim text As String
'按默认模式重绘
text = GetText(GetColumnValueAtRow(source, rowNum)) '这句就是上文提及的取数据
backBrush = New SolidBrush(TextBox.BackColor) '背景色
foreBrush = New SolidBrush(TextBox.ForeColor) '前景色