C# this.Invalidate() блокирует родительскую форму для доступа

У меня есть решение VS2010 (попытался повторить мою главную проблему), в котором есть 2 проекта, и каждый проект имеет одну форму окна каждый. Mainform находится в project_1, который имеет ссылку на проект 2, где определена ChildForm.

У меня есть кнопка на MainForm, чье событие нажатия кнопки создает ChildForm и показывает. Хотя ChildForm отображается, я могу вызывать любые команды меню (каждая команда меню реализована для отображения окна сообщения), которые определены в MainForm без каких-либо проблем.

НО, с другой стороны, я сохранил весь код как есть и переопределил метод OnPaint для ChildForm с помощью this.Invalidate(), как показано ниже

protected override void OnPaint(PaintEventArgs e)
    {
        this.Invalidate();
        base.OnPaint(e);
    }

Я запустил исполняемый файл, и он открыл мою MainForm и нажал кнопку, чтобы открыть мою ChildForm, затем нажал одну из команд меню, чтобы вызвать окно сообщения, и я обнаружил, что и MainForm, и ChildForms заморожены и зависают без какого-либо ответа.

Может кто-нибудь пролить свет на то, что пошло не так с переопределением метода OnPaint, который каждый раз выполняет строку this.Invalidate(), и подсказать, как можно решить эту проблему.

С уважением, Кумар

1 ответ

Вы назвали Invalidate() который будет стрелять OnPaint, OnPaint звонки Invalidate() и снова... это цикл вызова Invalidate() а также OnPaint -> Ваш пользовательский интерфейс заморожен.

Решение в том, что вы должны прояснить, что вы хотите и какова цель переопределения OnPaint Вот.

Другие вопросы по тегам