0

これが私のフォームonstartUpイベントコードです:

        int height = Screen.PrimaryScreen.Bounds.Height;
        int width = Screen.PrimaryScreen.Bounds.Width;
        this.StartPosition = FormStartPosition.Manual;
        this.Size = new Size(width, height);
        this.WindowState = FormWindowState.Maximized;

コードは正常に機能し、フォームは最大化されて起動します。アプリケーションをユーザーに配布した後。ユーザーが不満を言って、RHSのフォームボタンが画面に表示されないスクリーンショットを送信しました!!!

問題が何であるかはわかりましたが、修正方法がわかりません。問題はWindowsフォントにあり、開発マシンのコントロールパネル\外観とパーソナライズ\ディスプレイ\フォントサイズは小さく、顧客では中程度です。

コードでこれに対応する方法は?

4

2 に答える 2

2

問題はWindowsフォントにあります

ではない正確に。変更するフォントサイズではなく、ビデオアダプタの1インチあたりのドット数(DPI)設定です。従来の設定は96dpiです。これは、Vistaがこの設定を変更するのがはるかに簡単になったためです。その他の一般的な選択肢は、120 dpi(125%)と144 dpi(150%)で、ラジオボタンを使用してディスプレイアプレットから直接アクセスできます。

モニターの解像度は非常に長い間立ち往生しており、ムーアの法則をすでに30年もの間ダッキングしています。Appleが「レチナ」ディスプレイを推進していることもあり、これはようやく変化しています。最新のMacBookProは、13インチの画面に2560 x 1600ピクセル、約230dpiです。

これには問題があります。たとえば、1024x768のウィンドウを作成するプログラムでは、そのUIがそのようなディスプレイの切手に変わります。UIは、虫眼鏡なしでは使用できなくなります。必要なのは、そのようなプログラムがビデオDPI設定を認識し、ウィンドウが最初に設計された方法と比較してDPI設定の増加に比例して大きいウィンドウを作成することです。

これは、WPFとWinformsの両方で自動的に行われます。WPFは、すべての場所とサイズが1/96 "の単位でインチで表​​されるため、デフォルトで取得されます。Winformsは引き続きピクセルで機能しますが、AutoScaleModeプロパティを介して自動スケーリングが組み込まれています。

そのユーザーのマシンで起こっていることは、彼はあなたのマシンよりも大きな値でビデオDPI設定を持っています。しかし、彼の画面で利用可能なピクセルの数も多くありません。視力障害のある人が通常選ぶものですが、DPI設定を大きくすると、フォントが大きくなり、読みやすくなるという副作用があります。しかし、ウィンドウの右端と下端の近くに配置したコントロールが落ちるという避けられない問題があるため、画面の大きさが十分ではありません。

ウィンドウのレイアウトを調整可能にすることで、この種の問題に対処します。つまり、UIデザインを任意のウィンドウサイズで機能させることによって。Windowsプログラムの非常に一般的な機能。VisualStudioで試してみてください。ウィンドウの右下隅をドラッグして、使用可能なスペースが少なくても使用可能な状態を維持する方法を観察します。Control.AnchorおよびDockプロパティ、FlowLayoutPanelおよびTableLayoutPanelコントロール、困難な場合のResizeイベントなど、これを行うのに役立つ多くのWinforms機能。

これに対するQ&D修正は、Form.AutoScrollプロパティです。UIを引き続き使用できるようにするには、Trueに設定します。スクロールバーを使用すると、ユーザーはウィンドウの外にあるコントロールに引き続きアクセスできます。

于 2013-02-14T19:20:59.383 に答える
1

あなたが投稿したコードは問題とは何の関係もありません。ユーザーの画面解像度よりも高い画面解像度でフォームを設計し、フォーム内のコントロールのドッキング/固定を考慮していませんでした。

于 2013-02-14T16:44:20.800 に答える