どのように私は、フォームのために、「推奨サイズ」を設定するのですか?
質問
私は、フォーム上のいくつかのコントロールを持っている、と私は、彼らが育つことを確認し、フォームを縮小するために、フォームの左右に固定できます。私のフォームも自動的に成長し、長い文字列を得ることができ、いくつかのラベルに対応するために収縮するように設定されています。これらのラベルは削除さ彼らの長い文字列を取得すると、私は自分のフォームが戻って、それは前にあった幅に行きたいです。私のフォーム上の左右に固定されているコントロールは、これを防止するように見えると述べました。私は私が意図したとおりにそれを動作させることはできますか?
解決
ここで任意のサイズの特定のコードを記述する必要はありません方法だ...しかし、それはすべてあなたのボタンが下にあると仮定します。
ステップ1.ダイアログの最小サイズを設定します。
ステップ2.フォームのパネルを作成します。
ステップ3.パネルにあなたのボタンを移動します。
ステップ4ドックフォームの下部にパネル
ステップ5.ダイアログのAutoSizeModeがShrinkAndGrowに設定されていることを確認してください。
あなたは、この技術では、左、右、上、下の境界線のいずれかにパネルをドッキングすることができます。そして適切ダイアログリサイズを持っています。
他のヒント
TableLayoutPanelまたはflowlayoutpanelコントロールを試してみてください。
http://msdn.microsoft.com/en-私たち/ライブラリ/ system.windows.forms.tablelayoutpanel.aspx の
http://visualbasic.about.com/od/usingvbnet/a/tloflopnl。 HTM の
私はこれを行うあなたが示唆していをすることはできますか?私はあなたのユーザーのために役立つことをしようとしているが、(それはおそらく、ユーザーにランダムだと思われる)ランダムに縮小ウィンドウを持つことが混乱し、多分イライラすることになるだろう知っています。これはおそらく、より真の新しいWindows 7のUI機能エアロスナップつまり、あなたが左にウィンドウをドッキングして、それはあなたにリサイズするとされています。
ウィンドウのサイズ、ユーザの好みを考えてみましょう。ユーザーは、すでに彼らは事がそれを尊重し、なりたいどのように大きなあなたに言った!
編集:私はまた、あなたがこのルートを下るない場合は、バグがあることを追加する必要があります。 1000台のPIX幅でフォームを検討し、ユーザーが自分のモニター上半分にそれを表示するには(-500、100)にそれをドラッグします。彼らは目に見えるのですボタンヒットした場合(またはより悪いが、何かが!バックグラウンドで起こる)と、フォームウィンドウがちょうど消えた450個のピクセルにダウンサイズ変更します!ユーザーは、タスクバーにそれを見て、彼らはいくつかの空想のALT +スペースのショートカットを知っている限り、それを取得することはできません。
1つの提案は、OnPaintイベントをフックすることです。あなたのコントロールは、この時点で構築されており、その初期位置の値がフォームに設定されています。フォームレベルでプライベート設定オブジェクトにあなたが望むすべてのものをキャプチャします。
OnStringsRemovedイベント期間中、あなたのオブジェクトから読み取ると、それがあった方法で、すべてをバックに設定。アンカーのコントロールを変更すると、フォームのサイズ変更をトリガする必要がありますが、それはあなたが手動ですべてを設定する必要があることかもしれません。それはまた、フォームを修正する他の方法で回避制御を収縮しないこととすることができる。
の代替案は、すべての時間をちょうどあなたの初期値をハードコーディングし、それらに戻って行くことでしょう。私は個人のOnPaintを選ぶでしょう。それはあなたがフレームワークは、ユーザーがそれを見ているん前に、コントロールのサイズか何かをぶつけ大きいフォントのようなものを扱うお手伝いします。
System.Drawing.Graphics.MeasureStringを使用する
public SizeF MeasureString(string text, Font font, int width);
テキスト= yourtext。 フォント= fontofthelabel。 幅= maxwidthoflabel;
あなたがより多くのためにGoogleができます。