簡體   English   中英

信息標簽

[英]Information Label

我正在嘗試制作一個信息標簽,該標簽應顯示應用程序正在執行的事件。

刪除數據,讀取數據,寫入數據,連接數據庫。 等等..

我已經在表單中添加了標簽,並且正在為每個操作更改其text屬性,例如:

label1.Text = "stored procedure is being executed..";

但是,在運行時,標簽的文本不會更改。 我試圖添加方法

Application.DoEvents();

在每個地方,我都更改了標簽的text屬性。 工作正常。 但這看起來很愚蠢。 因此,我嘗試將此方法添加到標簽的“ TextChanged”事件中。 但這行不通! 難道我做錯了什么? 要么,

有沒有有效的方法來制作信息標簽?

您應該使用BackgroundWorker ; 處理ProgressChanged事件 ; 並在DoWork處理程序中調用ReportProgress 使用此方法,可以避免跨線程異常。

也許設置標簽文本是在與標簽所在位置不同的單獨線程中進行的? 代表可以解決這個問題。

    public void setLabelText(string value)
    {
        if (InvokeRequired)
            Invoke(new SetTextDelegate(setLabelText), value);
        else
            label1.Text = value;
    }

    delegate void SetTextDelegate(string value); 

每當您要更新標簽的文本時,就可以調用setLabelText方法。

如果問題與線程相關,那么您將獲得例外。

該應用程序未更新UI更新,因為它正在忙於做其他事情,例如訪問數據庫。

從這樣的形式的簡單方法開始:

private void SetStatus(string status)
{
    label1.Text = status;
    Application.DoEvents();
}

然后,您只需在代碼中調用SetStatus("executing...")等即可。

如果您進行了艱苦的工作,則需要使用@Aaron提到的invoke方法

后台工作人員的建議也很好,但是如果您不需要上述工作,工作人員的工作會變得更加有趣!

PK :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM