2

フォームにいくつかのコントロールがあり、フォームに合わせて拡大および縮小できるように、フォームの左右に固定しています。私のフォームは、長い文字列を取得する可能性のあるいくつかのラベルに対応するために、自動的に拡大および縮小するようにも設定されています。それらのラベルの長い文字列が削除されたら、フォームを以前の幅に戻したいと思います。私のフォームの左右に固定されている上記のコントロールは、これを妨げているようです。意図したとおりに動作させることはできますか?

4

5 に答える 5

8

これは、サイジング固有のコードを記述する必要がない方法です...ただし、すべてのボタンが下部にあることを前提としています。

手順1.ダイアログの最小サイズを設定します。

手順2.フォームにパネルを作成します。

ステップ3.ボタンをパネルに移動します。

手順4.パネルをフォームの下部にドッキングします。

手順5.ダイアログのAutoSizeModeがShrinkAndGrowに設定されていることを確認します

この手法を使用すると、パネルを左、右、上、下の境界線のいずれかにドッキングできます。ダイアログのサイズを適切に変更します。

于 2009-12-09T06:54:22.110 に答える
4

TableLayoutPanelまたはflowlayoutpanelコントロールを試してください。
http://msdn.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel.aspx
http://visualbasic.about.com/od/usingvbnet/a/tloflopnl.htm

于 2009-12-05T12:13:47.623 に答える
4

これをしないことをお勧めしますか?あなたがユーザーのために役立つことを試みていることは知っていますが、ウィンドウがランダムに縮小する(ユーザーにはランダムに見える可能性があります)と、混乱し、おそらくイライラするでしょう。これは、新しいWindows 7UI機能であるAeroSnapを使用すると、おそらくさらに当てはまります。つまり、ウィンドウを左側にドッキングすると、サイズが変更されます。

ユーザーの好みのウィンドウサイズを考慮してください。ユーザーはすでに、物をどれだけ大きくしたいかをあなたに話しました、それを尊重してください!

編集:このルートをたどるとバグがあることも付け加えておきます。フォームの幅が1000ピクセルで、ユーザーがフォームを(-500、100)にドラッグして、モニターに半分表示するとします。表示されているボタンを押すと(さらに悪いことに、背景で何かが発生します!)、フォームのサイズが450ピクセルに縮小されると、ウィンドウが消えたばかりです。ユーザーはタスクバーに表示されますが、高度なalt+spaceショートカットを知らない限りアクセスできません。

于 2009-12-14T17:34:56.103 に答える
0

1つの提案は、OnPaintイベントをフックすることです。コントロールはこの時点で作成され、フォームに初期位置の値が設定されます。フォームレベルでプライベートに設定されたオブジェクトに必要なものをすべてキャプチャします。

OnStringsRemovedイベント中に、オブジェクトから読み取り、すべてを元の状態に戻します。アンカーされているコントロールを変更すると、フォームのサイズ変更がトリガーされますが、すべてを手動で設定する必要がある場合があります。また、フォームを変更するとコントロールが縮小され、その逆ではない場合もあります。

別の提案は、初期値をハードコーディングして、毎回それらに戻ることです。私は個人的にOnPaintを選びます。ラージフォントがコントロールサイズを大きくするなど、ユーザーに表示される前にフレームワークが行うことを処理するのに役立ちます。

于 2009-12-08T14:07:06.880 に答える
-1

System.Drawing.Graphics.MeasureStringを使用します

    public SizeF MeasureString(string text, Font font, int width);

text = yourtext; font = fontofthelabel; width = maxwidthoflabel;

MSDNのMeasureString

あなたはもっとグーグルすることができます

于 2009-12-14T19:44:46.843 に答える