Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在windows窗体应用程序中刷新或重新绘制面板区域_Vb.net_Windows - Fatal编程技术网

Vb.net 如何在windows窗体应用程序中刷新或重新绘制面板区域

Vb.net 如何在windows窗体应用程序中刷新或重新绘制面板区域,vb.net,windows,Vb.net,Windows,我正在使用一些文本和图像的动态标签。我在loadflow函数中使用它们 面板上的图像被正确加载,当我在新DB调用后再次尝试检索时,图像不会被重新绘制或刷新 我已经尝试过一些内置函数,如Invalidate、Refresh、Update,但根本不起作用 带有图像和文本的标签如下所示 我的代码是 Private Function LoadFlow() Dim i As Integer = 0 'Check if datatable has rows and is not nul

我正在使用一些文本和图像的动态标签。我在loadflow函数中使用它们

面板上的图像被正确加载,当我在新DB调用后再次尝试检索时,图像不会被重新绘制或刷新

我已经尝试过一些内置函数,如Invalidate、Refresh、Update,但根本不起作用

带有图像和文本的标签如下所示

我的代码是

 Private Function LoadFlow()

    Dim i As Integer = 0
    'Check if datatable has rows and is not null
    If dtFlowPanel.Rows.Count > 0 AndAlso dtFlowPanel IsNot Nothing Then


        cboCheckPointStatus.DataSource = dtFlowPanel
        cboCheckPointStatus.DisplayMember = "CHECKPOINTNAME"
        cboCheckPointStatus.ValueMember = "TERMINALCHECKPOINTID"


        UltraPanel1.Visible = True

        Do While (i < dtFlowPanel.Rows.Count)


            'CheckPointName Label
            lblCheckPointName = New Label
            lblCheckPointName.Text = dtFlowPanel.Rows(i)("CHECKPOINTNAME").ToString()
            lblCheckPointName.Name = "CheckPoint"
            lblCheckPointName.ForeColor = Color.White
            lblCheckPointName.AutoSize = False
            lblCheckPointName.Height = 20
            lblCheckPointName.Width = 100
            lblCheckPointName.Location = New Point((i * 100), 50)

            'Round Circle Image Label
            lblImage1 = New Label
            lblImage1.Name = "Test" + i.ToString()
            lblImage1.Tag = i.ToString

            'If lblImage1.Name = "Test0" Then
            '    lblImage1.Image = Image.FromFile("c:\\Untitled1.png")
            'End If
            'If lblImage1.Name = "Test1" Then
            '    lblImage1.Image = Image.FromFile("c:\\Untitled1.png")
            'End If
            'If lblImage1.Name = "Test2" Then
            '    lblImage1.Image = Image.FromFile("c:\\Untitled2.png")
            'End If
            lblImage1.ImageAlign = ContentAlignment.MiddleRight
            lblImage1.BorderStyle = BorderStyle.None
            lblImage1.AutoSize = False
            lblImage1.Height = 20
            lblImage1.Width = 30
            lblImage1.Location = New Point((i * 100), 70)

            'Solid Black Line Image Label
            lblImage2 = New Label
            lblImage2.Name = "Test" + i.ToString()
            lblImage2.Tag = i.ToString

            lblImage2.Height = 20
            lblImage2.Width = 100
            lblImage2.Location = New Point((i * 100), 70)


            'Green Circle with Green Line
            If dtFlowPanel.Rows(i)("Flag") = 0 Then
                lblImage1.Image = Image.FromFile("c:\\Untitled1.png")
                lblImage2.Image = Image.FromFile("c:\\Line1.png")
                'Yellow Circle with White Line
            ElseIf dtFlowPanel.Rows(i)("Flag") = 1 Then
                lblImage1.Image = Image.FromFile("c:\\Untitled2.png")
                lblImage2.Image = Image.FromFile("c:\\Line.png")
                'Red Circle with White Line
            ElseIf dtFlowPanel.Rows(i)("Flag") = 2 Then
                lblImage1.Image = Image.FromFile("c:\\Untitled.png")
                lblImage2.Image = Image.FromFile("c:\\Line.png")

            End If

            'DatePicker
            dtpicker = New DateTimePicker
            dtpicker.Name = "Date" + i.ToString()
            dtpicker.Format = DateTimePickerFormat.Time
            dtpicker.ShowUpDown = True
            dtpicker.Height = 20
            dtpicker.Width = 95
            'horizontal
            dtpicker.Location = New Point((i * 100), 100)

            If Not IsDBNull(dtFlowPanel.Rows(i)("CheckPointTimeValue")) Then
                dtpicker.Value = dtFlowPanel.Rows(i)("CheckPointTimeValue")
            End If



            Me.UltraPanel1.ClientArea.Controls.Add(lblImage1)
            Me.UltraPanel1.ClientArea.Controls.Add(lblImage2)
            Me.UltraPanel1.ClientArea.Controls.Add(dtpicker)
            Me.UltraPanel1.ClientArea.Controls.Add(lblCheckPointName)

            lblImage1.Refresh()
            lblImage2.Refresh()

            i = (i + 1)

        Loop
    Else
        UltraPanel1.Visible = False
    End If
    Return Nothing
End Function
私有函数LoadFlow()
尺寸i为整数=0
'检查datatable是否有行且不为空
如果dtFlowPanel.Rows.Count>0并且dtFlowPanel也不是空的,则
cboCheckPointStatus.DataSource=dtFlowPanel
cboCheckPointStatus.DisplayMember=“检查点名称”
cboCheckPointStatus.ValueMember=“TERMINALCHECKPOINTID”
UltraPanel1.Visible=True
执行时(i
很难判断您的程序在做什么,但您的问题是:

lblImage1 = New Label

您不必创建新标签,您可以通过正在调用的
image.FromFile
使用新图像修改现有标签。如果使用该方法加载图像,您甚至不必调用
刷新

,感谢您的响应,但我已经解决了此问题如果不是lblImage1什么都不是,那么就调用Me.UltraPanel1.ClientArea.Controls.Remove(lblImage1)结束如果不是lblImage2什么都不是那么Me.UltraPanel1.ClientArea.Controls.Remove(lblImage2)结束如果添加了这个If条件,好的。很高兴你拿到了。