【问题标题】:Datagridview backcolor does not work on the first loadDatagridview backcolor 在第一次加载时不起作用
【发布时间】:2017-05-18 13:35:52
【问题描述】:

我的表单加载事件中有一个绑定数据网格视图的方法。绑定 datagridview 时,我修改了一些 backcolor 行。

绑定前我使用Me.SuspendLayout(),绑定完成后我使用Me.ResumeLayout

当我的表单第一次加载时,所有行都使用defaultCellStyle。但是,当我通过组合框上的事件重新加载它时,它会按我的预期工作(某些行具有修改后的背景色)。我试图以编程方式更改组合框的 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

【问题讨论】:

  • @Mederic 我编辑了我的帖子
  • 我的猜测是,在第一次加载时,您的数据网格没有行,因此不会调用 ColorRows。首次加载时 lst 实际上是否包含任何行?
  • @Slugsie 在第一次加载中,我的 datagridview 包含 1105 行。
  • 它是否真的命中了'dtg.Rows(i).DefaultCellStyle = grayStyle'这一行?

标签: vb.net winforms datagridview


【解决方案1】:

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

为了解决我的问题,我在DataBindingComplete 事件中放置了为行着色的方法。现在效果很好。

【讨论】:

  • 我也遇到了同样的问题。如果我根据dataTable以编程方式填充DGV然后更改颜色,无论是否显示,颜色都很好。但是,如果我使用 DGV.DataSource = dataTable 然后更改颜色,除非 DGV 已经显示,否则颜色不会按预期显示,直到我在 DGV 首次显示后再次执行这些。但是DataBindingComplete 事件效果很好。这是非常不合理的,因为步骤的顺序几乎是一样的! BTY,当我们在 2 tabPage 中更改 2 GDV 时,就会发生这种情况。这不是假设。
【解决方案2】:

在 form_shown 事件中添加着色方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多