12

しばらくの間、私のアプリケーションを使用している何人かの人々は、WinFormがどのように描画されているかについての奇妙な振る舞いについて不平を言っています。フォームには固定されたものsplitcontainerがあります。panel1私は今日まで彼らの問題を再現することができませんでした。

Win7エンタープライズの32ビットバージョンを実行しているラップトップにアプリをインストールしました。(アプリは、64ビットバージョンのWin7 entを実行しているコンピューターで問題なくビルドされ、実行されています。)

何が起こっているかを確認するために、プロジェクトファイルをラップトップにコピーし、Visual Studio 2012で開いて、何が起こっているかを確認しました。しかし、どうしたらいいのかわからないのでびっくりしました。

開発者について マシン(私の64ビットwin7 ent)、フォーム(および分割コンテナー)サイズの仕様は次のとおりです。

  • フォームの高さ:383
  • フォーム幅:707
  • 分割コンテナの高さ:321
  • 分割コンテナ幅:691
  • スプリッター距離:380

プロジェクトをラップトップにロードすると、仕様が次のように変更されます。

  • フォームの高さ:419
  • フォーム幅:859
  • 分割コンテナの高さ:397
  • 分割コンテナ幅:921
  • スプリッター距離:380

これで、プログラムがどのように表示されるのかを見ることができないという人たちの不満をようやく理解することができました。

32ビットマシンでは、スプリッターがいくつかのボタンを部分的に覆っています。これにより、テキストが表示されないため、プログラムが明らかに使いにくくなります。

これが起こる理由はありますか?

つまり、元のコードが特定のサイズ値に設定されている場合、プログラムがどこで実行されていても、それはどうあるべきかということではありませんか?(もちろん、ユーザーがサイズを変更しない場合)。

そして最も重要なのは、2つの別々のバージョンを作成せずにこれを解決できる方法はありますか?

4

1 に答える 1

13

システムを異なるDPI(Dots Per Inch)で実行している可能性があるため、スケーリングオプションとフォントサイズへの影響により、Windowsフォームでのコントロールの配置とスケーリングの方法が変わります。

あなたはコントロールパネルを見ることができます| 外観とパーソナライズ| それらの設定を見つけるために表示します。

  • 小さい-100%= 96 DPI
  • 中-125%= 120 DPI
  • 大きい-150%= 144 DPI

DPIに効果があるかどうか、および適切に調整する必要がある場合は、WinFormsスケーリングオプションを調べることができます。

于 2012-08-25T15:40:10.413 に答える