Восстановление настроек пользовательского интерфейса в C# WinForms - на какое событие реагировать?

Когда подходящее время для восстановления настроек макета пользовательского интерфейса для System.Windows.Forms.Control?

Я пробовал это:

FooBarGadget control = new FooBarGadget();
parent.Controls.Add(control);
control.FobnicatorWidth = lastLayoutSettings.FobWidth;

Никакой сигары. Причина? контроль не закончен, выкладывая его внутренности; после построения он имеет размер по умолчанию 100x100 пикселей. Когда он загрузится и отобразится в пользовательском интерфейсе, он будет иметь размер 500x500 пикселей. Следовательно, установка FobnicatorWidth на 200 пикселей не выполняется; это больше, чем элемент управления.

Есть ли событие control.Loaded - где-нибудь, где я могу восстановить свои сохраненные настройки пользовательского интерфейса?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
816
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы создаете этот элемент управления как часть загрузки нового Form, хорошее место для перезагрузки сохраненных настроек будет в Form.OnLoad (или в ответ на событие Форма.Загрузка). Еще одно событие, которое может быть полезно, - это Control.HandleCreated, которое происходит, когда создается базовое окно вашего элемента управления.

Если ни один из этих вариантов не помогает, возможно, дополнительная информация о вашем конкретном сценарии поможет нам найти лучший ответ.

Это не часть формы, иначе я бы использовал Form.OnLoad. Я попробую событие HandleCreated.

Judah Gabriel Himango 06.10.2008 01:12

Привет, Чарли. Просто хотел сообщить вам, что я тестировал событие HandleCreated, и это действительно работает. Спасибо!

Judah Gabriel Himango 06.10.2008 18:43

Чарли, после нескольких месяцев использования мы обнаружили, что HandleCreated не всегда работает. Для вложенных элементов управления иногда это не работает. Вместо этого использование события .Layout, похоже, работает.

Judah Gabriel Himango 06.03.2009 19:43

Очень интересно. Мне было бы интересно узнать, почему это так, если вы в какой-то момент поймете это.

Charlie 06.03.2009 23:02

Чарли, подробнее ... событие Layout тоже не всегда работает. Гррррр ... свяжусь с вами, когда узнаю больше.

Judah Gabriel Himango 09.03.2009 22:25

Я обнаружил, что вложенные элементы управления не могут быть восстановлены на HandleCreated. Правильный способ сделать это - дождаться, пока вложенные элементы управления запустят свое событие Layout. Когда это произойдет, если их дескриптор будет создан, вы можете восстановить настройки этих элементов управления.

Judah Gabriel Himango 17.03.2009 00:09

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