Форма. Определение запуска во время инициализации ()
-
19-09-2019 - |
Вопрос
У меня такой же код пользовательского интерфейса, работающий на моей английской машине XP и на японской машине XP. По какой -то причине - поведение отличается между этими двумя машинами:
На японской машине событие OnResize запускается во время вызова инициализации (я думаю, что из функции Resumelayout). На английской машине это не так.
У меня есть метод переопределения, чтобы использовать эти значения изменения моих личных переменных, которые я определил. Поскольку компонент не был полностью загружен (CTOR все еще работает), эти переменные являются нулевыми, и я получаю исключение.
Я могу исправить код, проверив, является ли переменная нулевая или нет, но я хотел бы понять, почему ее вызывают в первую очередь и почему это происходит только на этой машине.
Во время поиска в сети я нашел ту же проблему, что и кто -то другой, но без решения (http://social.msdn.microsoft.com/forums/en/winforms/thread/95aefae4-45d8-4ac5-a8f2-6e2142dfb631).
Решение
Правильное раскрытие: Я работаю с HILA, поэтому я смог увидеть код. Причиной другого поведения была из -за свойства управления, называемого AutoscaleMode. В базовом классе управления значение этого свойства было AutoscaleMode.font. Поскольку все наши исследования и разработки работают с теми же настройками (английский), они вели должным образом, а ошибка там не произошла. Переход на японскую машину означала различные настройки шрифта от настройки на английских машинах. Это вызвало неприятности. Таким образом, мы изменили значение свойства AutoscaleMode на NONE, и оно решило проблему. Вывод: Остерегайтесь свойства AutoscaleMode.