Datagridview backcolor在第一次加载时不起作用

时间:2017-05-18 13:35:53

标签: vb.net winforms datagridview

我在表单的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

2 个答案:

答案 0 :(得分:2)

我发现了一些关于相同问题的文章,似乎datagridview控件存在问题(我们无法在显示表单之前更改颜色单元格)。方法运行和事件被触发但它们不会改变颜色。

要解决我的问题,我将方法放在DataBindingComplete事件中的行中。它现在运作得非常好。

答案 1 :(得分:0)

将着色方法添加到form_shown事件中。