web-dev-qa-db-ja.com

Windowsフォームオブジェクトのサイズ変更(ダウンサイジング)を妨げているのは何ですか?

ツリービュー、リッチテキストボックス、タブコントロールの3つのオブジェクトを含むWindowsフォームオブジェクトがあります。それらはウィンドウフォームにドッキングされていませんが、固定されています(上+左)。

Form-resizeイベントハンドラーが呼び出されたときにサイズを変更するコードを記述しましたが、フォームサイズを大きくした場合にのみ機能しているようです。つまり、フォームのサイズを小さくすることはできません。これには、最初にメインウィンドウフォームを増やしてから、元のサイズに戻そうとする場合も含まれます。

次のコードを使用して、各フォームのサイズを変更した後、3つのオブジェクトのサイズを手動で設定します。

        treeView1.Height += (this.Height - oldHeight);
        richTextBox1.Width += (this.Width - oldWidth);
        tabControl1.Width += (this.Width - oldWidth);
        tabControl1.Height += (this.Height - oldHeight);
        oldHeight = this.Height;
        oldWidth = this.Width;

最小サイズが設定されているオブジェクトはありません(サイズ変更プロセス全体ですべて0,0になります)

フォームのサイズが小さいサイズに変更されない理由は何ですか?

20
Maixy

Autosize(メインのFormオブジェクトに設定されていた)は、ウィンドウがその中に含まれるオブジェクトよりも小さいサイズに縮小するのを妨げていました。メインフォーム内のオブジェクトは、サイズを大きく変更するたびに増加するため、サイズを大きくした後、メインフォームを縮小することはできませんでした。メインのFormオブジェクトでAutosizeを無効にするすることで、サイズ変更の完全な制御を取り戻すことができました。

20
Maixy

上記で問題が解決しない場合は、フォームの最小サイズが必要以上の値に設定されていないことを確認してください。

4
Shaner

Visual StudioでWinformを右クリックします->選択プロパティ-> AutoSizeが設定されます- True->次のように変更しますFalse

OR

この行をコードに含めます

this.AutoSize = false;
1
Midhun

すべてのControlsPanelに入れ、DockPanelプロパティをFillに設定するだけです。 Autosizeをtrueに設定しても機能すると思います。

0
Tomas Chabada

通常のマウス選択ではサイズを変更できないフォームの動作を修正する方法がもう1つある場合があります。

上記の説明に関連して、(VS2010でVB.netを使用して)標準のWindowsフォームの1つがマウスの選択でサイズ変更されないことを発見しました。 FormBorderStyleFixedに設定されているかのようです。 FormBorderStyleSizableToolWindowに変更しても、期待されるマウスサイズの動作は得られませんでした。

フォームデザインのプロパティのフォーム設定は次のとおりです。

Autosize: false
AutoSizeMode: growonly
Doublebuffered: true
Enabled: true
FormBorderStyle: Sizable
ImeMode: NoControl
Locked: false
AutoScaleMode: Font
AccessibleRole: default

このフォームのすべての表示またはコードプロパティ設定、およびそのすべてのDesignerプロパティ設定も、マウスのサイズ変更を適切に許可する同じプロジェクト内の他のフォームと同じでした。溶液を洗浄し、再構築しても、凍結したフォームの問題は修正されませんでした。 [最大化]をクリックすると機能し、[最小化]をクリックしました。フォームサイズは、期待どおりにコードで設定できます。フォームのマウスサイズ変更のみが正しく機能しませんでした。

コードでパラメータを設定することにより、目的のマウス選択のサイズ変更を再度有効にできることを発見しました。

myForm.AutoScaleMode = Windows.Forms.AutoScaleMode.Inherit

このパラメーターは、フォームのデザインで.Fontに設定されていました。これは、適切に機能する他のフォームでも使用されていました。

次に...奇妙なことに...コード内で.Inheritから.Fontに戻すと、フォームのサイズを適切に変更することもできました。

この場合、コードでのその設定(.Inheritまたは.Fontのいずれか)は、フォームのサイズ変更の問題を修正するための重要な要素のようです。フォームの予想される操作を何らかの形で妨害することをシステムがユーザーに示さない隠されたパラメーターがあるようです。

0
Michael

私はここですべての答えに従いました、どれも私のために働きませんでした。私は先に進んでパディングを追加しました、そしてそれはうまくいきました。 [プロパティ]タブに移動してラベルを選択し、パディングを追加します。

0
Mujeeb Ishaque

フォームのプロパティのデフォルトのMinimumSizeをゼロ以外の数値(10など)に変更するだけです。

0
Majid

最小幅と最小高さを確認してください

enter image description here

デザイナービュー:

enter image description here

ご覧のとおり、最小幅と最小高さを設定すると、自動サイズをfalseに設定している間、ボタンは希望のサイズになります:)

0
James Heffer