C#:MDI の子を含むリージョンを変更するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1534549

  •  20-09-2019
  •  | 
  •  

質問

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 つの方法を見つけました。

  1. 複数の MenuStrip オブジェクトを追加します (それぞれのオブジェクトが、親フォーム上で MDI 領域を 24 ピクセル下に移動します)。
  2. MDI 子の LocationChanged イベントを使用して、その Y 値が下に維持したい境界線よりも大きいことを手動で確認します。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top