0
即時通訊有一些問題與一些文本即時消息寫在進度條上,它會顯示但一旦GUI線程完成繪圖後會消失,並且運行循環的單獨線程再次開始。我假設這是因爲它超出了範圍,但我不知道如何解決它。進度條上的文本超出範圍
總體佈局如下:其處理在單獨的線程一串數據,並提出了每個循環之後的事件
namespace namespace1
{
public partial class Form1:Form
{
....
}
public class ProgressBar
{
public void SubscribeToUpdateEvent()
{
//subscribe incrementPB to event
}
public void IncrementPB(object sender, EventArgs e)
{
//Update progress bar's value
DrawPercentage(value);
}
public void DrawPercentage(Value)
{
using (Graphics Draw = statusBar.CreateGraphics())
{
Draw.DrawString(percentage.ToString() + "%", ProgressBar.DefaultFont, Brushes.Black, new PointF((statusBar.Width/2) - ((Draw.MeasureString(percentage.ToString() + "%", ProgressBar.DefaultFont)).Width/2.0F),
(statusBar.Height/2) - ((Draw.MeasureString(percentage.ToString() + "%", ProgressBar.DefaultFont)).Height/2.0F)));
}
}
}
//第二文件。
namespace namespace2
{
public class MyClass
{
public void iterator()
{
for(int i=0;i<10;i++)
{
//raise event to update the progress bar here
}
}
}
}
感謝您的幫助。
我給它一個鏡頭,看看它是怎麼回事。非常感謝您花時間回答我的問題,非常感謝! – 2012-03-10 13:01:40
我看到了UserControl類,我找不到OnPaint事件。你知道爲什麼它沒有在MSDN上列出嗎?或者我看錯了地方?謝謝。 – 2012-03-11 13:57:35
@HansRudel:這是一個受保護的虛擬方法。事件的名稱是'Paint',這個方法只負責提升它。在這種情況下,我們調用'base.OnPaint(e)',觸發'Paint'事件,然後繪製我們自定義的圖形。 – 2012-03-11 14:48:36