0

MDI 親を作成すると、フォームの「内部」全体が MDI 領域になります。

MDI の親にメニューストリップを追加すると、MDI 領域が少し縮小され、メニューストリップ用のスペースが確保されます。

しかし、パネルを MDI 親の上部に追加すると、内部全体が MDI リージョンのままになります。つまり、MDI の子をパネルの後ろに移動して、タイトル行を非表示にすることができます。MDI の子をメニューストリップの後ろに移動すると、スクロールバーが表示され、上にスクロールしてタイトル行にアクセスできます。ただし、メニューストリップの代わりにパネルを使用している場合、スクロールバーは表示されません。MDI リージョンはパネルを認識していないためと思われます。

特定の Y 値より下で開始するように MDI 領域をスケーリングするにはどうすればよいですか?

4

2 に答える 2

0

csharptest.net が正しく、MDI リージョンを変更できない場合、次の 2 つの方法を見つけました。

  1. 複数の MenuStrip オブジェクトを追加します (それぞれが親フォームで MDI 領域を 24 ピクセル下に移動します)。
  2. MDI 子の LocationChanged イベントを使用し、それらの Y 値が下に保持したい境界線よりも大きいことを手動で確認します。
于 2009-10-08T08:49:55.797 に答える
0

簡単に言うと、.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();
    }
}
于 2009-10-08T01:07:46.563 に答える