在我的程序(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的重复事件。我该如何解决这个问题?
答案 0 :(得分:0)
您是否尝试将gridview包装在ajax控件中(在ParentChanged事件上使用触发器?
我对#14; RecipeID"感到有些困惑。因为它没有被使用而被传递。