我在XP英语计算机和XP日本机器上运行相同的UI代码。由于某种原因 - 这两台机器之间的行为不同:

在日语机器上,在初始核对呼叫期间触发了重大值事件(我认为这是从RESUMELAYOUT函数中触发的)。在英语机器上没有。

我有一种替代方法,可以使我定义的私人变量的变化值。由于该组件没有满载(CTOR仍在运行),因此这些变量为无效,我得到了例外。

我可以通过检查变量是否为null来修复代码,但是我想了解为什么它首先被调用,以及为什么仅在此计算机上发生它。

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

有帮助吗?

解决方案

正确披露: 我正在与希拉合作,所以我能够看到代码。不同行为的原因是由于控件的A属性称为Autoscalemode。在控制的基类中,该属性的值为autoscalemode.font。由于我们所有的研发机器都使用相同的设置(英语)运行,它们的行为正确,并且该错误并未发生。更改为日本机器意味着与英国机器上的字体设置不同。这造成了麻烦。因此,我们将AutoScalemode属性的价值更改为无,并解决了问题。 结论: :当心AutoScalemode属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top