2016-05-23 9 views
0

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子フォームのサイズを変更しないでください。

+0

ジョブに間違ったツールを使用しています。 MDIは時代遅れのパラダイムであり、MDIでは、正常に動作するためには、子フォームが通常のサイズ変更可能な罫線を持つ必要があります。親フォームをIsMDIContainer = falseにし、子フォームをTopLevel = falseに変更して、次に同じことを行うことができます。 – LarsTech

+0

@LarsTech私と一緒にこれを見てくれてありがとう。 TopLevelの変更は何をしますか? 1つのフォームでこれを試したところ、そのフォームはどこにも表示されません – elmer007

+0

これを親コンテナに追加する必要があります。 'this.Controls.Add(yourChild);'。 'yourChild.Visible = true;' – LarsTech

答えて

0

子フォームでは、AutoScaleModeの正当性をNoneにしてください。 これで修正されます。

関連する問題