我在表单的load事件中有一个绑定datagridview的方法。绑定datagridview时,我会修改一些 backcolor 行。
在绑定之前我使用Me.SuspendLayout()
,当它完成时,我使用Me.ResumeLayout
。
首次加载表单时,所有行都使用defaultCellStyle
。但是,当我通过comboBox上的事件重新加载它时,它按预期工作(某些行具有修改后的背景色)。我试图以编程方式更改我的comboBox的selectedIndex,但它也不起作用。
我尝试删除布局方法,但它也不起作用。有人可以给我建议吗?
顺便说一句,我正在VB.NET(Visual Studio 2010)中开发。
编辑:
Private Sub frm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.SuspendLayout()
loadDTGV()
Me.ResumeLayout()
myCombo.SelectedIndex = 1
End Sub
Private Sub loadDTGV()
Dim dtBindSource As New BindingSource()
Dim lst As SortedBindingList.SortedBindingList(Of myClass)
lst = _DAO.getData()
dtBindSource.DataSource = lst
dtgv.DataSource = dtBindSource
If dtgv.Rows.Count > 0 Then
colorRows()
End If
End Sub
Private Sub colorRows()
Dim grayStyle As New DataGridViewCellStyle
grayStyle.BackColor = Color.LightGray
For i = 0 To dtg.Rows.Count - 1
If dtg.Rows(i).Cells(0).Value = "TEST" Then
dtg.Rows(i).DefaultCellStyle = grayStyle
End If
Next
End Sub
Public Sub changeIndex() Handles myCMB.SelectedIndexChanged
loadDTGV()
End Sub
答案 0 :(得分:2)
我发现了一些关于相同问题的文章,似乎datagridview
控件存在问题(我们无法在显示表单之前更改颜色单元格)。方法运行和事件被触发但它们不会改变颜色。
要解决我的问题,我将方法放在DataBindingComplete
事件中的行中。它现在运作得非常好。
答案 1 :(得分:0)
将着色方法添加到form_shown事件中。