Datagridview(在usercontrol上)绘制的单元格恢复为defaultstyle

时间:2016-05-24 06:32:01

标签: vb.net winforms datagridview user-controls backcolor

在我的程序(Winforms)中,我使用usercontrols作为页面。我通过以下方式执行此操作:

我的Form1上有一个面板,我加载了usercontrols,这些用户控件是我的实际控件(按钮,标签,复选框等)。所以实际上我使用用户控件作为" sub"我的表单中的页面。

usercontrols在运行时开始时声明,因此它们是" live"当我把它们加载到面板中。这总是很好,直到我昨天遇到问题。

昨天我在其中一个用户控件上使用了datagridview,在此控件的ParentChanged期间,我调用了一个Sub来更改此数据网格视图的backcollor。 (子本身是位于模块中的公共子)

像这样:

Private Sub Init_ParentChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ParentChanged
    GetRecipe(RecipeDGV, "Bla")
End Sub

Public Sub GetRecipe(ByVal Data As DataGridView, ByVal RecipeID As String)
    For r As Integer = 0 To Recipe_Mem.Rows.Count - 1
         For c As Integer = 0 To Recipe_Mem.Columns.Count - 1

              Data(c, r).Style.BackColor = getPresetColorByID(CInt(Data(c, r).Value))
              Data(c, r).ToolTipText = getPresetNameByID(CInt(Data(c, r).Value))

         NEXT
    NEXT
End Sub

当我运行我的程序时,我可以看到我的dgv从数据库中获取数据(发生在同一个Sub中)。但细胞中没有颜色变化。

现在,我注意到的一点是,当我向用户控件添加一个按钮,并使用此按钮的click事件调用相同的子颜色进行着色时,它确实有用。)

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
         GetRecipe(RecipeDGV, "Bla")
End Sub

知道为什么这对按钮点击事件起作用,但它不在usercontrol父改变事件中吗?看起来在父改变事件期间有一些dgv的重复事件。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您是否尝试将gridview包装在ajax控件中(在ParentChanged事件上使用触发器?

我对#14; RecipeID"感到有些困惑。因为它没有被使用而被传递。