2009-10-07 3 views
0

При создании родителя MDI вся «внутренняя» формы создается в области MDI.C#: Как изменить регион, содержащий детей MDI?

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

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

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

ответ

0

Ну что ж, вы не можете изменить окно родительского/MDI-контейнера в .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(); 
    } 
} 
+0

Спасибо. Я решил это, добавив событие OnLocationChanged и проверив, было ли значение Y ниже высоты панели. Мне это не нравится. –

0

Если csharptest.net прав, и никто не может изменить MDI области, я нашел два способа сделать это:

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