在InitializeComponent()期间触发Form.OnResize

Hil*_*ila 4 onresize initializecomponent

我在XP英文机器和XP日本机器上运行相同的UI代码.出于某种原因 - 这两台机器之间的行为是不同的:

在日语机器上,OnResize事件在InitializeComponent调用期间被触发(我认为是来自ResumeLayout函数).在英语机器上它没有.

我有一个OnResize的覆盖方法,它改变我定义的私有变量的值.由于组件未完全加载(Ctor仍在运行),这些变量为空,我得到一个异常.

我可以通过检查变量是否为null来修复代码,但我想了解为什么它首先被调用以及为什么它只在这台机器上发生.

在我通过网络搜索期间,我发现了其他人发布的相同问题,但没有解决方案(http://social.msdn.microsoft.com/Forums/en/winforms/thread/95aefae4-45d8-4ac5-a8f2- 6e2142dfb631).

Ika*_*aso 7

正确披露:我正在与希拉合作,所以我能够看到代码.导致不同行为的原因是由于名为AutoScaleMode的控件的属性.在控件的基类中,此属性的值为AutoScaleMode.Font.由于我们所有的研发机器都运行相同的设置(英语),因此它们表现得很好,而且那里没有发生错误.更改为日语机器意味着与英语机器上的字体设置不同.这造成了麻烦.所以我们将AutoScaleMode属性的值更改为None,它解决了这个问题.结论:注意AutoScaleMode属性.