none
не изменяются свойства элементов в событии Form1_Closing() перед закрытием формы RRS feed

  • Вопрос

  • Кто-нибудь может объяснить в чем прикол. Проект WinForms. На форме есть одна кнопка button1. Обрабатываю событие Form1_FormClosing(), которое срабатывает перед закрытием формы. В нем хочу изменить текст кнопки:

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
    
                ActiveForm.Text = "Текст";
                button1.Text = "Closing...";
    
                Thread.Sleep(2000);
            }
    Текст основной формы меняется, а вот текст кнопки нет. Пробовал добавить TextBox и изменить его свойство Text - тоже не меняется. В чем может быть проблема?


    Андрей

    29 января 2019 г. 6:50

Ответы

  • Конечно не изменяется. Для этого надо чтоб поток обработал сообщения, а вы его блокируйте.

    Как вариант можно добавить вызов Application.DoEvents() перед блокировкой потока. Но вообще сама практика блокировки потока порочна.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    29 января 2019 г. 7:42
    Модератор

Все ответы

  • Конечно не изменяется. Для этого надо чтоб поток обработал сообщения, а вы его блокируйте.

    Как вариант можно добавить вызов Application.DoEvents() перед блокировкой потока. Но вообще сама практика блокировки потока порочна.



    This posting is provided "AS IS" with no warranties, and confers no rights.

    29 января 2019 г. 7:42
    Модератор
  • Хм, заработало!

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {       
                ActiveForm.Text = "Текст";
                button1.Text = "Closing...";
                Application.DoEvents();
                Thread.Sleep(2000);
            }
    А про какой именно поток Вы говорите, про вызов Thread.Sleep(2000)?


    Андрей

    29 января 2019 г. 10:14