[英]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.