Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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中更新标签文本_.net_Vb.net - Fatal编程技术网

如何在vb.net中更新标签文本

如何在vb.net中更新标签文本,.net,vb.net,.net,Vb.net,在我的vb.net winform应用程序中,单击开始按钮label1.text应为“进程已启动”,然后在完成该方法后将运行一些文件保存方法label1.text应更改为“文件已保存” 标签“保存到文件”的初始状态不是comingup。触发器方法完成后,标签的状态将更改为“文件已保存” 有什么建议吗?更新lblStatus标签后,您需要暂时停止阻止代码。您可以尝试在第一次标签更新后放置应用程序.DoEvents。否则,表单将等待刷新,直到整个代码块执行完毕Application.DoEvents

在我的vb.net winform应用程序中,单击开始按钮label1.text应为“进程已启动”,然后在完成该方法后将运行一些文件保存方法label1.text应更改为“文件已保存”

标签“保存到文件”的初始状态不是comingup。触发器方法完成后,标签的状态将更改为“文件已保存”


有什么建议吗?

更新lblStatus标签后,您需要暂时停止阻止代码。您可以尝试在第一次标签更新后放置
应用程序.DoEvents
。否则,表单将等待刷新,直到整个代码块执行完毕
Application.DoEvents
将挂起当前线程,处理windows消息,然后在完成后继续执行。

您需要使用标签的Refresh()方法。使用Application.DoEvents有副作用,应该小心使用(这不是合适的用法)。

其他两个答案(我的首选)的替代方法是执行
Trigger()
SaveXls()

您的代码将类似于:

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click

    lblStatus.ForeColor = Color.Red
    lblStatus.Text = "Saving to File"

    If backgroundWorker1.IsBusy <> True Then
        ' Start the asynchronous operation.
        backgroundWorker1.RunWorkerAsync()
    End If
End Sub

Private Sub backgroundWorker1_DoWork(ByVal sender As System.Object, _
ByVal e As DoWorkEventArgs) Handles backgroundWorker1.DoWork
     'Get the values and write to xls
             Trigger()
             SaveXls()
End Sub

Private Sub backgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, _
ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorker1.RunWorkerCompleted
    If e.Cancelled = True Then
        lblStatus.Text = "Canceled!"
        lblStatus.ForeColor = Color.Black
    ElseIf e.Error IsNot Nothing Then
        lblStatus.Text = "Error: " & e.Error.Message
    Else
        lblStatus.Text = "File Saved"
        lblStatus.ForeColor = Color.Green
    End If
End Sub
Private Sub btnStart\u Click(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理btnStart。单击
lblStatus.ForeColor=颜色。红色
lblStatus.Text=“保存到文件”
如果backgroundWorker1.IsBusy为True,则
'启动异步操作。
backgroundWorker1.RunWorkerAsync()
如果结束
端接头
私有子backgroundWorker1_DoWork(ByVal发送方作为System.Object_
ByVal e As DoWorkEventArgs)处理后台工作1.DOWORKER
'获取值并写入xls
触发器()
SaveXls()
端接头
私有子backgroundWorker1_RunWorkerCompleted(ByVal发送方作为System.Object_
ByVal e作为RunWorkerCompletedEventArgs)处理backgroundWorker1.RunWorkerCompleted
如果e.取消=真,则
lblStatus.Text=“已取消!”
lblStatus.ForeColor=颜色。黑色
否则,错误就不是什么了
lblStatus.Text=“Error:&e.Error.Message
其他的
lblStatus.Text=“文件已保存”
lblStatus.ForeColor=Color.Green
如果结束
端接头

在后台操作进行时,使用后台工作程序也会使窗体保持响应,而不是将其冻结

初始设置标签文本后,使用form1.refresh()刷新表单。然后执行Trigger()和SaveXls()函数,最后将标签文本更改为“filesaved”


感谢您的回复和努力

进一步解释:当您更改控件上的某些内容时,该控件将被标记为重新绘制。直到所有其他代码都运行完毕,才会重新绘制。这可以防止在一段代码中更改多个控件或以多种方式更改一个控件时出现无数重绘。调用
Control.Refresh()
将强制它立即重新绘制。的可能重复项
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click

    lblStatus.ForeColor = Color.Red
    lblStatus.Text = "Saving to File"

    If backgroundWorker1.IsBusy <> True Then
        ' Start the asynchronous operation.
        backgroundWorker1.RunWorkerAsync()
    End If
End Sub

Private Sub backgroundWorker1_DoWork(ByVal sender As System.Object, _
ByVal e As DoWorkEventArgs) Handles backgroundWorker1.DoWork
     'Get the values and write to xls
             Trigger()
             SaveXls()
End Sub

Private Sub backgroundWorker1_RunWorkerCompleted(ByVal sender As System.Object, _
ByVal e As RunWorkerCompletedEventArgs) Handles backgroundWorker1.RunWorkerCompleted
    If e.Cancelled = True Then
        lblStatus.Text = "Canceled!"
        lblStatus.ForeColor = Color.Black
    ElseIf e.Error IsNot Nothing Then
        lblStatus.Text = "Error: " & e.Error.Message
    Else
        lblStatus.Text = "File Saved"
        lblStatus.ForeColor = Color.Green
    End If
End Sub