フォームにいくつかのコントロールを追加し、これがどのように機能するかを Anchor プロパティに変更しましたが、実行時にフォームのサイズを変更すると、コントロールは同じ場所に留まります。
たとえば、フォームの右下隅に 2 つのボタンがあります。これらはフォーム上にあり、コンテナーなどはありません。アンカー = 下、右。FormBorderStyle = Sizable. しかし、実行中にフォームをドラッグしてサイズ変更すると、ボタンが移動しません。
何か不足していますか?
c#2005
フォームにいくつかのコントロールを追加し、これがどのように機能するかを Anchor プロパティに変更しましたが、実行時にフォームのサイズを変更すると、コントロールは同じ場所に留まります。
たとえば、フォームの右下隅に 2 つのボタンがあります。これらはフォーム上にあり、コンテナーなどはありません。アンカー = 下、右。FormBorderStyle = Sizable. しかし、実行中にフォームをドラッグしてサイズ変更すると、ボタンが移動しません。
何か不足していますか?
c#2005
もう 1 つの可能性は、ボタンをフォーム上に直接ではなく誤って配置したことです。代わりに、それらを何らかのコンテナ (例: パネル、tableLayoutPanel など) に配置しますが、このコンテナにはアンカーまたはドッキングの値が正しく設定されていません。
念のため、designer.cs を調べて、ボタンがthis.Controls.Add()
機能によってフォームに直接追加されているかどうか、または他の Controls-List (例: ) に追加されているかどうかを確認する必要がありますpanel.Controls.Add()
。
私はこれが古い投稿であることを知っていますが、とにかく貢献したいと思います。
私の問題は、親パネルのサイズが変更されたときに、パネルに追加したフォームのサイズが自動的に調整されないことでした。
問題は私がこれをやっていたことでした:
form.WindowState = FormWindowState.Maximized; // <-- source of the problem
form.AutoSize = true; //this causes the form to grow only. Don't set it if you want to resize automatically using AnchorStyles, as I did below.
form.FormBorderStyle = FormBorderStyle.Sizable; //I think this is not necessary to solve the problem, but I have left it there just in case :-)
panel1.Controls.Add(form);
form.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
form.Dock = DockStyle.Fill; //this provides the initial size adjust to parent' size.
form.Visible = true;
解決するために、私は最初の行にコメントしただけで//form.WindowState = FormWindowState.Maximized;
、すべてが魅力のように機能しました。
また、自動サイズ プロパティが設定されている場合、問題が発生します。
Dock プロパティは何に設定されていますか? これにより、アンカー プロパティが無効になる可能性があります。
VS11ベータ版でも同じ問題があります。私は何度もアンカーを使用しており、常に適切に機能していましたが、今ではアンカーで何が起こっているのか理解できません。さらに、ドックフィルも機能しません! (自動サイズまたはドック プロパティは使用されません)
PS (40 分後) 問題が見つかったようです。PictureBox の Resize イベント リスナーがあり、onResize
ハンドラで新しいピクチャ ボックス サイズの新しい Image を作成します。新しいイメージの作成を削除すると、すべてが機能します!
ここでSizeChanged
イベントを使用し、このイベント ハンドラーで新しいイメージを作成します。したがって、Resize が終了するまで送信者オブジェクトを変更すべきではないと思います。
私はまったく同じ問題を抱えていました。
状況:
TableLayoutPanel
1 つの行を に設定しautosize
ます。この行では、右、下のアンカーが機能しませんでした。ユーザー428955の規定に従って、を取り外してautoSize
固定高さに置くと問題が解決しました。
フォームがローカライズ可能な場合は、他の言語でアンカー/ドックの変更を行ったかどうかを確認してください。