2010-02-09 26 views
3

我的XP英语机器和XP日语机器上运行的代码相同。 出于某种原因 - 这两种机器之间的行为是不同的:InitializeComponent()中触发的Form.OnResize

在日本机器上,OnResize事件在InitializeComponent调用期间被触发(我认为从ResumeLayout函数中)。在英国的机器上它没有。

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

我可以通过检查修复代码,如果该变量为空或不是,但我想了解为什么它获取调用摆在首位以及为什么只发生在本机上。

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

回答

7

适当披露:我正在与Hila合作,所以我能够看到代码。 不同行为的原因是由于称为AutoScaleMode的控件的属性。在控件的基类中,此属性的值为AutoScaleMode.Font。由于所有我们的研发& d机都使用相同的设置(英文)上运行他们的表现正确和错误没有发生有。更改为日文机器意味着与英文机器不同的字体设置。这造成了麻烦。所以我们将AutoScaleMode属性的值更改为None并解决了问题。 结论:提防AutoScaleMode财产。

相关问题