Когда подходящее время для восстановления настроек макета пользовательского интерфейса для System.Windows.Forms.Control?
Я пробовал это:
FooBarGadget control = new FooBarGadget();
parent.Controls.Add(control);
control.FobnicatorWidth = lastLayoutSettings.FobWidth;
Никакой сигары. Причина? контроль не закончен, выкладывая его внутренности; после построения он имеет размер по умолчанию 100x100 пикселей. Когда он загрузится и отобразится в пользовательском интерфейсе, он будет иметь размер 500x500 пикселей. Следовательно, установка FobnicatorWidth на 200 пикселей не выполняется; это больше, чем элемент управления.
Есть ли событие control.Loaded - где-нибудь, где я могу восстановить свои сохраненные настройки пользовательского интерфейса?





Если вы создаете этот элемент управления как часть загрузки нового Form, хорошее место для перезагрузки сохраненных настроек будет в Form.OnLoad (или в ответ на событие Форма.Загрузка). Еще одно событие, которое может быть полезно, - это Control.HandleCreated, которое происходит, когда создается базовое окно вашего элемента управления.
Если ни один из этих вариантов не помогает, возможно, дополнительная информация о вашем конкретном сценарии поможет нам найти лучший ответ.
Привет, Чарли. Просто хотел сообщить вам, что я тестировал событие HandleCreated, и это действительно работает. Спасибо!
Чарли, после нескольких месяцев использования мы обнаружили, что HandleCreated не всегда работает. Для вложенных элементов управления иногда это не работает. Вместо этого использование события .Layout, похоже, работает.
Очень интересно. Мне было бы интересно узнать, почему это так, если вы в какой-то момент поймете это.
Чарли, подробнее ... событие Layout тоже не всегда работает. Гррррр ... свяжусь с вами, когда узнаю больше.
Я обнаружил, что вложенные элементы управления не могут быть восстановлены на HandleCreated. Правильный способ сделать это - дождаться, пока вложенные элементы управления запустят свое событие Layout. Когда это произойдет, если их дескриптор будет создан, вы можете восстановить настройки этих элементов управления.
Это не часть формы, иначе я бы использовал Form.OnLoad. Я попробую событие HandleCreated.