既然您說在計算完成後工件自行更正,這很可能是由於您沒有給UI線程更新屏幕的機會,因爲您正在花費CPU進行計算。您可能需要使用某種線程來解決問題。
Windows窗體包含一個不錯的BackgroundWorker
控件,它可以使這種任務非常簡單。只需將控件從「工具箱」拖到窗體設計器上,然後爲DoWork
和RunWorkerCompleted
事件創建事件處理程序。將計算放入DoWork
處理程序中,並在RunWorkerCompleted
處理程序中計算完成後需要發生的任何UI更新(重要的是請注意,您不應從DoWork
處理程序訪問任何UI元素)。
這裏是一個簡短的代碼示例:
public partial class Form1 : Form
{
private MyCalculationState _state;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
_state = new MyCalculationState();
// Do some calculations
_state.Value = 5;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Update the UI after calculations are complete
textBox1.Text = _state.Value.ToString();
}
}
WinForm的我承擔? – Paparazzi
是.net winform – Teejay
然後標記爲winform。這是UI問題。 – Paparazzi