Mdi子フォームのサイズに合わせてMdi親フォームのサイズを変更しようとしています。したがって、子フォームが開かれると、親フォームは子フォームのサイズに基づいてサイズ変更され、子フォームはデザイナーで作成されたものと同じサイズのままです。開くときにMdi子フォームのサイズが変更されないようにする方法
これは十分に単純なようだ、と私ははほとんど次でそれを達成した: - 親フォームが大きく成長し、子フォームが充填された第1で
frm_newWindow newWindow = new frm_newWindow();
this.ClientSize = newWindow.Size;
newWindow.MdiParent = this;
newWindow.Dock = DockStyle.Fill;
this.MinimumSize = this.Size;
newWindow.Show();
、私はそれは素晴らしい仕事と思いましたクライアントエリア - 私は移動するつもりだった。しかし、私は近くを見て、サイジングが正しくないことに気付きました。親フォームはサイズを変更しますが、何らかの理由で子のフォームサイズも変更されています。結果として、子のフォームのコントロールが不正確なサイズと誤った場所に表示されます。彼らはかなり近いですが、正しくありません。たとえば、デザイナーでは、リストボックスの下の「自動配置」されたテキストボックス(テキストボックスとリストボックスの間に青い線が表示されます)は、実行時にフォーム上で下になります。
私も試してみました:
this.ClientSize = newWindow.ClientSize
子フォームが境界線を持っていない、と私は多分存在しない境界が子フォームのサイズの計算に何とかまだあったと思ったからです。しかし、この行は同じように振る舞いました。
現在のところ、Visual Studioが作成するInitializeComponent()行以外の子フォームにはコードがありません。フォームの枠線のスタイルが "なし"に設定されています。サイズとテキストのほかに、他のプロパティはすべてデフォルトのままです。
オープン時にMdi子フォームのサイズを変更しないでください。
ジョブに間違ったツールを使用しています。 MDIは時代遅れのパラダイムであり、MDIでは、正常に動作するためには、子フォームが通常のサイズ変更可能な罫線を持つ必要があります。親フォームをIsMDIContainer = falseにし、子フォームをTopLevel = falseに変更して、次に同じことを行うことができます。 – LarsTech
@LarsTech私と一緒にこれを見てくれてありがとう。 TopLevelの変更は何をしますか? 1つのフォームでこれを試したところ、そのフォームはどこにも表示されません – elmer007
これを親コンテナに追加する必要があります。 'this.Controls.Add(yourChild);'。 'yourChild.Visible = true;' – LarsTech