Могу ли я показать ToolStrip дочерней формы в MDIParent Form? - PullRequest
1 голос
/ 02 мая 2020

У меня есть форма MDI, и я хочу объединить / добавить ToolStrip дочерней формы с родительской формой Mdi.

Обычно ToolStrip дочерней формы отображается только внутри дочерней формы владельца, но я хочу объединить ее с MdiParent.

Я могу сделать это с помощью MenuStrip, но вряд ли найду ToolStrip, чтобы сделать то же самое.

1 Ответ

3 голосов
/ 02 мая 2020

Метод ToolStripManager.Merge () можно использовать для объединения ToolStrip MdiParent и Toolstrip дочерней формы. ToolStrip дочерней формы будет перемещен в ToolStrip MdiParent.

Метод ToolStripManager.RevertMerge () удалит ToolStrip дочерней формы, когда дочерняя форма закрыта.

Конечно, используйте реальные имена, которые вы назначили для MdiParent ToolStrip (здесь, MdiToolStrip) и дочернюю форму FormStrip (здесь, с именем toolStrip1), и адаптируйте имена форм к тому, что вы используете ,

Назначение различных имен дочерним элементам управления Forms ToolStrip.

Когда вы создаете дочерний экземпляр формы, добавьте его перед его отображением:

ChildForm1 child1 = new ChildForm1();
child1.MdiParent = this;
ToolStripManager.Merge(child1.toolStrip1, this.MdiToolStrip);
child1.FormClosed += (s, ev) => { ToolStripManager.RevertMerge(this.MdiToolStrip, child1.toolStrip1); };
child1.Show();

Если у вас есть MenuStrip в MdiParent и в ваших дочерних формах, ToolStripMenusItems будут объединены автоматически, но я предлагаю вам добавить это сразу после InitializeComponent() в конструкторе MdiParent:

this.MainMenuStrip = MdiMenuStrip;

, где MdiMenuStrip - это имя, назначенное для MenuStrip MdiParent.

Причина объясняется здесь:
Как избежать отказов экрана при добавлении нового дочернего окна MDI

Дополнительные показания (документы MSDN):

Как: настроить Automati c Объединение меню для приложений MDI
Объединение пунктов меню в элементе управления Windows Forms MenuStrip

...