2011-12-15 31 views
3

WinFormsアプリケーションの内部では、画面の解像度に合わせてウィンドウを最大化してサイズを変更するために、リサイズコントロールを処理する最も良い方法は何ですか?私はこのように設定されている3つの列を持っています。 LABEL TEXTBOXを各列に追加します。それを6列として数えることができます。私は右にアンカーを試みましたが、問題は1列のテキストボックスが次の2列に重なることです。私もドッキングを試みたが、それはそのトリックをしていないようだ。これを行う簡単な方法はありますか?解像度に基づいてコントロールのサイズを変更するにはどうすればよいですか?

答えて

3

TL; DR:リサイズロジックを手動でコーディングする必要はありません。副作用として、これをやろうとしてはいけません。

従来のWinFormsでは、独自のソリューションを使用することなく、私の知る限りの自動方法はありません。 Sean87suggestedAutoScaleModeプロパティですが、自動化されているものの、解像度による自動サイジングはサポートされていません。これは、Windowsのフォントサイズ設定またはDPI設定に基づいてスケーリングのオプションを提供します。どちらも単純に画面の解像度を変更するときにはどちらも直接変更されません。正直なところ、ほとんどの一般的なユーザー(おそらくパワーユーザー)はおそらくDPIまたはフォントサイズの設定を変更することはありません。

さらに、基本的なユーザーの観点からは、画面の解像度を上げるということは、アプリケーションウィンドウを配置する仮想デスクトップのスペースを増やすことです。実際、ほとんどのモニターはLCDベースであり、したがって、native resolutions CRTの過去のことを中心にこれを変更しています。しかし、新しい、より大きなモニターを購入する行為は、一般的なユーザーにこの仮想スクリーンスペースを増やすことができるので、画面上のより多くのウィンドウを同時に見ることができます。スクリーンの解像度と同じ相対的なサイズを常に維持するアプリケーションは、私が思うにはまれであり、高度な開発者ユーザーを含むほとんどのユーザーの期待に反するものです。

通常、ウィンドウのサイズが変更された場合、内容をインテリジェントかつ便利に調整するためにアプリケーションをコーディングする必要がありますが、一般的には、マシンや好みに合わせて管理することをユーザーに任せます( "私の家、私の規則 "原則)。これは、ほとんどの(すべての)アプリケーションが(ウィンドウ枠をドラッグするなどして)ユーザーが直接操作する場合を除いてウィンドウの位置を変更しない理由です。実際には、これはすべて、解像度に基づいて自動サイジングルールを含めるようにではなくを選択した理由を説明しています。

0

フォームのAutoScaleModeと各コントロールの自動サイズプロパティを変更することができます。 splitcontainerまたはパネルを使用して列を形成することもできます。

1

"列"の意味を定義しません。一般に、TableLayoutPanelを使用し、各「セル」の内側にコントロールのアンカーを設定します。

関連する問題