【发布时间】:2015-03-24 10:57:54
【问题描述】:
我在 VS2008 / .NET 3.5 winforms 项目中的 DataGridView 控件遇到了一个非常奇怪的问题。我有一个带有网格的简单表格。在表单构造函数中,我调用一个函数将研磨绑定到 DataTable,然后循环遍历将最后一个单元格的背景颜色设置为 LightGrey 的行,如果列值为 true,则单元格本身设置为只读。表单完成加载后,代码不起作用,即单元格未设置为 LightGrey 并且不是只读的(即使当我单步执行代码时,我也可以看到正在设置的属性)。然后我再次从按钮调用该函数,但这次颜色更改为 LightGrey 并且单元格设置为只读,即代码有效。
代码:
Dim dgr As DataGridViewRow
For i_DsRow As Integer = 0 To ds.Tables(0).Rows.Count - 1
dr = ds.Tables(0).Rows(i_DsRow)
For i_row As Integer = 0 To DgSearch.Rows.Count - 1
dgr = DgSearch.Rows(i_row)
If dr("DsColoumn1").ToString.ToUpper = dgr.Cells("DgColoumn1").Value.ToString.ToUpper Then
If Val(dr("Coloumn2").ToString) = 3 Then
dgr.Cells("SomeColomname").Value = dr("SomeColoumName2").ToString
If dgr.Cells("SomeColomname3").Value.ToString <> "" Then dgr.Cells("SomeColomname3").Value &= ", "
dgr.Cells("SomeColomname3").Value &= dr("SomeColoumName2").ToString
SetCellColor(dgr.Cells("SomeColomname"), dgr.Cells("SomeColomname3"))
End If
Exit For
End If
Next
Next
Private Sub SetCellColor(ByVal resultCell As DataGridViewCell, ByVal ColorCell As DataGridViewCell)
If resultCell.Value.ToString().ToUpper = "A".ToUpper Or resultCell.Value.ToString().ToUpper = "B".ToUpper Then
ColorCell.Style.BackColor = Color.FromName("Red")
ElseIf resultCell.Value.ToString().ToUpper = "C".ToUpper Or resultCell.Value.ToString().ToUpper = "D".ToUpper Then
ColorCell.Style.BackColor = Color.FromName("MediumSeaGreen")
Else
ColorCell.Style.BackColor = Color.FromName("Yellow")
End If
End Sub
【问题讨论】:
-
我们可以看看一些代码吗?此外,设置背景颜色应该使用像 cell_formatting 这样的专用方法来完成
-
如果 resultCell.Value.ToString().ToUpper = "A".ToUpper 或 resultCell.Value.ToString().ToUpper = "B".ToUpper 然后 ColorCell.Style.BackColor = Color.FromName ("Red") ElseIf resultCell.Value.ToString().ToUpper = "C".ToUpper 或 resultCell.Value.ToString().ToUpper = "D".ToUpper Then ColorCell.Style.BackColor = Color.FromName("MediumSeaGreen ") Else ColorCell.Style.BackColor = Color.FromName("Yellow") End If
-
表单中的这段代码是否加载?
-
我有 fillgrid 函数,它在页面加载和用数据读取器填充网格后调用。我在 for 循环中使用此代码
-
所以那里有一些我们不知道它们来自哪里的变量,例如ColorCell,resultCell。那些人是怎么进来的?我们可以有完整的例程吗?
标签: vb.net winforms datagridview