Пожалуйста, посмотрите на следующий кодНевозможно обновить метку в окне запроса
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();
}
Я звоню выше метод, используя другой метод и пытается обновить textLabel
поле внутри цикла, как этот
public void doIt()
{
ShowDialog();
for(int i=0;i<10;i++)
{
textLabel.TEXT = ""+i;
Threading.Thread.Sleep(1000);
}
}
Так мы работаем на Java, но в C# я не смог обновить текст ярлыков таким образом. Что здесь не так, и почему я не могу обновить текст? Пожалуйста помоги.
ShowDialog() является модальным, поэтому он блокирует выполнение кода до тех пор, пока форма не будет закрыта. Я бы использовал таймер вместо ... для цикла/сна. – LarsTech
... или BackgroundWorker, в дополнении, textLabel недоступен (вне сферы действия) в методе doIt –
@NikolaDavidovic: Он определяется как глобальная переменная –