4

XP英語マシンとXP日本語マシンで同じUIコードを実行しています。何らかの理由で、これら2つのマシン間で動作が異なります。

日本のマシンでは、InitializeComponent呼び出し中にOnResizeイベントがトリガーされます(ResumeLayout関数からだと思います)。英語のマシンではそうではありません。

定義したプライベート変数の値を変更するOnResizeのオーバーライドメソッドがあります。コンポーネントが完全にロードされていないため(Ctorはまだ実行中です)、これらの変数はnullであり、例外が発生します。

変数がnullかどうかを確認することでコードを修正できますが、そもそもなぜ呼び出されるのか、なぜこのマシンでのみ発生するのかを理解したいと思います。

ネットで検索したところ、他の誰かが投稿したのと同じ問題が見つかりましたが、解決策はありません(http://social.msdn.microsoft.com/Forums/en/winforms/thread/95aefae4-45d8-4ac5-a8f2- 6e2142dfb631)。

4

1 に答える 1

7

適切な開示:私はHilaと協力しているので、コードを見ることができました。動作が異なる理由は、AutoScaleModeと呼ばれるコントロールのプロパティによるものです。コントロールの基本クラスでは、このプロパティの値はAutoScaleMode.Fontでした。すべてのR&Dマシンは同じ設定(英語)で実行されているため、適切に動作し、バグは発生しませんでした。日本のマシンに変更すると、英語のマシンのフォント設定とは異なるフォント設定になります。これが問題の原因でした。そこで、AutoScaleModeプロパティの値をNoneに変更し、問題を解決しました。結論:AutoScaleModeプロパティに注意してください。

于 2010-02-09T11:45:42.597 に答える