Vb.net datagridview CurrentCell ColumnIndex重新打开表单后没有值

Vb.net datagridview CurrentCell ColumnIndex重新打开表单后没有值,vb.net,datagridview,Vb.net,Datagridview,我有一个datagridview,它显示来自mysql的数据。当我点击按钮打开表单时,表单将正常显示,它将加载datagridview并显示良好。因此,这里我检查datagridview每一行的每一列,以检查指定日期与今天日期时间之间的天数。所以基本上,如果totaldays是1,我将用指定的颜色设置列。所以这是调试后第一次打开表单。然后我尝试关闭/关闭表单,并通过单击按钮重新打开表单,是的,它将加载数据,但未指定每列的颜色。 下面是分配每列颜色的代码 Sub Highlight()

我有一个datagridview,它显示来自mysql的数据。当我点击按钮打开表单时,表单将正常显示,它将加载datagridview并显示良好。因此,这里我检查datagridview每一行的每一列,以检查指定日期与今天日期时间之间的天数。所以基本上,如果totaldays是1,我将用指定的颜色设置列。所以这是调试后第一次打开表单。然后我尝试关闭/关闭表单,并通过单击按钮重新打开表单,是的,它将加载数据,但未指定每列的颜色。 下面是分配每列颜色的代码

Sub Highlight()

    Dim row As Integer = myNewForm.DataGridView1.Rows.Count
    Dim i As Integer = 0
    Dim j As Integer = 0

    j = myNewForm.DataGridView1.CurrentCell.ColumnIndex

    MsgBox(j)

    i = myNewForm.DataGridView1.CurrentRow.Index
    Dim Ids As String = ""
    Dim todaydates As Date = Date.Today

    Dim testDate As Date
    Dim daysBetween = ""

    MsgBox(j)
    For i = 0 To row - 1


        For j = 1 To 9

            Ids = myNewForm.DataGridView1.Item(j, i).Value.ToString

            If Ids <> "" Then

                testDate = Function_Class.getDateOut(Ids, FacID())

                daysBetween = (testDate - todaydates).TotalDays


                ' If myNewForm.DataGridView1.Item(0, i).Value = "GHHL1" Then

                If Ids <> "" Then
                    If daysBetween = 0 Then
                        myNewForm.DataGridView1(j, i).Style.BackColor = Color.Red
                    ElseIf daysBetween = 1 Then
                        myNewForm.DataGridView1(j, i).Style.BackColor = Color.Pink
                    ElseIf daysBetween = 2 Then
                        myNewForm.DataGridView1(j, i).Style.BackColor = Color.Yellow
                    ElseIf daysBetween < 0 Then
                        myNewForm.DataGridView1(j, i).Style.BackColor = Color.Green
                    ElseIf daysBetween > 2 Then
                        myNewForm.DataGridView1(j, i).Style.BackColor = Color.White
                    End If


                ElseIf Ids = "" Then

                    myNewForm.DataGridView1(j, i).Style.BackColor = Color.White

                End If

            ElseIf Ids = "" Then

                myNewForm.DataGridView1(j, i).Style.BackColor = Color.White
            End If

        Next

    Next i

End Sub
子高亮显示()
将行设置为整数=myNewForm.DataGridView1.Rows.Count
尺寸i为整数=0
尺寸j为整数=0
j=myNewForm.DataGridView1.CurrentCell.ColumnIndex
MsgBox(j)
i=myNewForm.DataGridView1.CurrentRow.Index
Dim Ids As String=“”
Dim todaydates As Date=日期。今天
Dim testDate作为日期
Dim Days Between=“”
MsgBox(j)
对于第1行的i=0
对于j=1到9
Ids=myNewForm.DataGridView1.Item(j,i).Value.ToString
如果ID为“”,则
testDate=Function\u Class.getDateOut(id,FacID())
daysBetween=(testDate-todaydates)。总天数
'如果myNewForm.DataGridView1.Item(0,i).Value=“GHHL1”,则
如果ID为“”,则
如果daysBetween=0,则
myNewForm.DataGridView1(j,i).Style.BackColor=Color.Red
ElseIf daysBetween=1,则
myNewForm.DataGridView1(j,i).Style.BackColor=Color.Pink
ElseIf daysBetween=2,则
myNewForm.DataGridView1(j,i).Style.BackColor=Color.Yellow
如果两天之间的时间小于0
myNewForm.DataGridView1(j,i).Style.BackColor=Color.Green
如果两天之间的时间大于2
myNewForm.DataGridView1(j,i).Style.BackColor=Color.White
如果结束
ElseIf id=”“然后
myNewForm.DataGridView1(j,i).Style.BackColor=Color.White
如果结束
ElseIf id=”“然后
myNewForm.DataGridView1(j,i).Style.BackColor=Color.White
如果结束
下一个
接下来我
端接头
因此,我将指出问题所在。这部分的Loot
j=myNewForm.DataGridView1.CurrentCell.ColumnIndex
i在那里回显j的值。在我第一次调试并打开表单时,值j将弹出显示值0。。之后,当我关闭表单并单击按钮重新打开表单时,Msgbox不会弹出。。
我已经到处找了找我在这里找不到工作的问题。

解决了。Im在DataGridView1的myNewForm表单中使用数据绑定完成事件。将子过程Highlight()放入数据绑定完成事件中。这起作用了

什么是
myNewForm
?我猜它不是指屏幕上看到的实际表单实例,我在myNewForm中调用了Sub Highlight()。datagridview显示在myNewForm窗体中。子高亮显示()不在myNewForm的模块中