4

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

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

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

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

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

4

1 回答 1

7

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

于 2010-02-09T11:45:42.597 回答