C#:MDI の子を含むリージョンを変更するにはどうすればよいですか?
質問
MDI 親を作成すると、フォームの「内部」全体が MDI 領域になります。
メニューストリップを MDI 親に追加すると、MDI 領域はメニューストリップ用のスペースを確保するために少し縮小されます。
ただし、MDI 親の上部にパネルを追加した場合、内部全体が MDI 領域のままになります。つまり、MDI 子をパネルの後ろに移動して、そのタイトル行を非表示にすることができます。MDI の子をメニューストリップの後ろに移動すると、スクロールバーが表示され、上にスクロールしてタイトル行にアクセスできます。ただし、メニューストリップの代わりにパネルを使用している場合、スクロールバーは表示されません。MDI 地域はパネルのことを知らないからだと思います。
MDI 領域を特定の Y 値以下で開始するようにスケールするにはどうすればよいですか?
解決
まあそれの短いはあなたが.NETでMDI親/コンテナウィンドウを変更することはできませんです。ウィンドウがまだある、あなたが本当に望む場合には、Win32 APIとそれを見つけることができます。
しかし、あなたがあなたの目標として記述することはなんとかです。任意のコードがないので、私はあなたが間違っているものを言うことができないが、以下では、この作業を示しています:
public class Form1 : Form
{
static void Main(string[] args) { Application.Run(new Form1()); }
public Form1()
{
this.IsMdiContainer = true;
Panel test = new Panel();
test.Dock = DockStyle.Top;
test.Height = 100;
this.Controls.Add(test);
Form child = new Form();
child.MdiParent = this;
child.Text = "Child";
child.Show();
}
}
他のヒント
csharptest.net が正しく、MDI リージョンを変更できない場合、私はそれを行う 2 つの方法を見つけました。
- 複数の MenuStrip オブジェクトを追加します (それぞれのオブジェクトが、親フォーム上で MDI 領域を 24 ピクセル下に移動します)。
- MDI 子の LocationChanged イベントを使用して、その Y 値が下に維持したい境界線よりも大きいことを手動で確認します。
所属していません StackOverflow