0
請看看下面的代碼無法更新提示框標籤
private Label textLabel;
public void ShowDialog()
{
Form prompt = new Form();
prompt.Width = 500;
prompt.Height = 150;
prompt.Text = caption;
textLabel = new Label() { Left = 50, Top=20, Text="txt"};
TextBox textBox = new TextBox() { Left = 50, Top=50, Width=400 };
Button confirmation = new Button() { Text = "Ok", Left=350, Width=100, Top=70 };
confirmation.Click += (sender, e) => { prompt.Close(); };
prompt.Controls.Add(confirmation);
prompt.Controls.Add(textLabel);
prompt.Controls.Add(textBox);
prompt.ShowDialog();
}
我使用另一種方法調用上面的方法,並試圖更新這樣
public void doIt()
{
ShowDialog();
for(int i=0;i<10;i++)
{
textLabel.TEXT = ""+i;
Threading.Thread.Sleep(1000);
}
}
一個循環內
textLabel
場
這就是我們在Java中的做法,但在C#中,我無法以這種方式更新標籤文本。這裏有什麼問題,爲什麼我不能更新文本?請幫忙。
ShowDialog()是模態的,所以它阻止了代碼的運行,直到窗體關閉。我會使用計時器而不是for ...循環/睡眠。 – LarsTech
...或BackgroundWorker,在adition中,textLabel在doIt方法中無法訪問(超出範圍) –
@NikolaDavidovic:它被定義爲一個全局變量 –