C#:Как изменить регион, содержащий дочерние элементы MDI?

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

  •  20-09-2019
  •  | 
  •  

Вопрос

При создании родительского элемента MDI вся "внутренняя часть" формы становится областью MDI.

Если вы добавляете menustrip к родительскому MDI, область MDI немного уменьшается, чтобы освободить место для menustrip.

Но если вы добавите панель в верхнюю часть родительского MDI-файла, вся внутренняя часть по-прежнему будет областью MDI.Это означает, что вы можете переместить дочерние элементы MDI за панель и скрыть строку их заголовка.Если вы переместите дочерние элементы MDI за полосу меню, появятся полосы прокрутки, и вы можете прокрутить их выше, чтобы получить доступ к строке заголовка.Но полосы прокрутки не отображаются, когда вы используете панель вместо menustrip.Я полагаю, потому, что регион MDI не знает об этой панели.

Как я могу масштабировать область MDI, чтобы она начиналась ниже заданного значения Y?

Это было полезно?

Решение

Короче говоря, вы не можете изменить окно MDI parent / container в .Net.Окно все еще там, и вы можете найти его с помощью Win32 apis, если действительно захотите.

Однако то, что вы описываете как свою цель, вполне выполнимо.Поскольку нет никакого кода, я не могу сказать, что вы делаете неправильно, но следующее демонстрирует эту работу:

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, я нашел два способа сделать это:

  1. Добавьте несколько объектов MenuStrip (каждый из них перемещает область MDI на 24 пикселя ниже родительской формы).
  2. Используйте событие LocationChanged дочерних элементов MDI и вручную проверьте, что их значение Y больше границы, под которой вы хотите их сохранить.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top