簡體   English   中英

視覺c帶有進度條的尖銳進度欄

[英]visual c sharp progress bar with background worker

我有以下代碼可以更新Visual C Sharp中的進度條。 它工作正常,並且條形圖針對每個百分比移動。 但是我也有我從另一個網站上的帖子中獲得的代碼,這是假設將進度條的值作為百分比百分比放在進度條的中間。 它會瞬間顯示進度條值的%,但隨后消失。 我是c的新手,在pBar值更改后嘗試了諸如pBar.update和pBar.refresh之類的幾項操作。 我已經編輯了一些代碼,以使其更易於理解。 參見下文,一旦我執行了reportprogress,背景工作程序progresschanged就執行了一次,並且再次看到pBar值發生了變化,並且文本框文本也得到了更新,但是由於某種原因,在下方繪制進度條內的%文本的代碼被覆蓋了。 我再次看到%的瞬間。 您可以在嘗試各種方法的地方查看我的一些評論,以查看它是否會重繪%

         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        backgroundWorker1.ReportProgress(10);
        collect_long_process();
        }

         private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        pBar.Value = e.ProgressPercentage;

        txtBox_pBar.Text = "Gathering info";

        int percent = 10;//(int)(((double)pBar.Value / (double)pBar.Maximum) * 100);
        pBar.CreateGraphics().DrawString(percent.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular),
        Brushes.Black, new PointF(pBar.Width / 2 - 10, pBar.Height / 2 - 7));
    //pBar.Update();
    //Application.DoEvents();
    }

那段代碼錯了。

您需要處理進度條的Paint事件並在e.Graphics上進行e.Graphics
否則,下次控件繪制自身時,您的圖形將被覆蓋。

通常,永遠不要使用CreateGraphics()

暫無
暫無

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

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