Я искал и пробовал много подходов к этой проблеме.
В приложении Visual Studio 2015 WinForma я хочу, чтобы текст Label
изменялся после некоторой задержки.
Из многих моих подходов я могу подтвердить, что строковое значение метки изменилось с помощью MessageBox
, но экранный интерфейс не изменился.
Пока я пробовал:
1: Thread.Sleep(number)
внутри Public Form1()
до изменения значения.
Результат: кажется, что пользовательский интерфейс не обновляется до конца функции.
2: nameoflabel.refresh();
ВЕЗДЕ.
Результат: нигде ничего не делает.
3: используйте System.Timers
и измените значение моего Label
в истекшем таймерефункция.
Результат: изменяет значение Label
, но не отображается на экране.
4: поскольку все, что включает нажатие кнопки, отлично работает для изменения текста моей метки, я рассказал, как имитироватьнажал кнопку с buttonName.preformClick()
и сделал для этого поддельную кнопку.
Результат: значение меняется, но все ещена экране ничего не меняется.
Я начинаю верить, что это должно быть ошибкой.Да?Нет?В любом случае, вот что мне нужно для работы:
public partial class Form1 : Form
{
public System.Timers.Timer holder;
Label say;
public Form1()
{
InitializeComponent();
say = new Label();
say.Text="start text";
this.Controls.Add(say);
holder = new System.Timers.Timer(5000);
holder.Elapsed += new ElapsedEventHandler(holdone);
holder.Enabled = true;
}
public void holdone(Object source, ElapsedEventArgs e)
{
//messagebox is correct but onscreen gui is not
say.Text = "new after seconds";
MessageBox.Show(say.Text);
}
}