#c# #winforms #mdi
#c# #winforms #mdi
Вопрос:
Здравствуйте, ребята, у меня есть одна проблема, у меня есть 1 родительская форма и 3 дочерних, я просто хочу открыть их в развернутом виде, но когда я делаю это, в левой части появляются эти 3 элемента управления. Как я могу открыть одну форму без этого элемента управления. Если я делаю это неправильным способом, пожалуйста, посоветуйте мне, что mdi подходит для таких вещей?
пожалуйста, посмотрите на эти фотографии http://img440.imageshack.us/img440/6831/mdinz.jpg http://img139.imageshack.us/img139/4687/mdi1.jpg
Комментарии:
1. Я предполагаю, что что-то не так, но какой-нибудь код мог бы помочь, как вы вызываете дочернюю форму, здесь есть 1 форма MDI? когда вы имеете в виду 3 элемента управления, вы имеете в виду максимизировать, минимизировать .. кнопки?
2. По скриншотам я могу понять, что английский, вероятно, не является вашим родным языком, но было бы полезно, если бы вы могли сформулировать свой вопрос намного более четко. В чем проблема на скриншотах?
3. Да, я имею в виду максимизировать, минимизировать и закрыть. это код: Inventory invent = новая инвентаризация(); invent.MdiParent = это; invent. WindowState = FormWindowState.Развернутый; изобретать. Dock = док-стиль. Заполнять; изобретать. Показать();
4. invent.MdiParent = this…is «этот» потомок другой родительской формы mdi? Я думаю, вы можете избежать этих кнопок, если не используете какие-либо сторонние инструменты. Я использую DevExpress XtraTabMdiContainer для такого рода заданий. Единственная проблема, которую я вижу в вашем примере, заключается в том, что 3 кнопки повторяются 3 раза!? 1 для основной формы, 1 для родительской? и последнее для дочернего элемента. Значит, ваша основная форма отличается от родительской формы MDI!???
Ответ №1:
Это известная ошибка в реализации MDI, срабатывающая при создании развернутого дочернего окна в родительском конструкторе. Это пример:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
var child = new Form2();
child.MdiParent = this;
child.WindowState = FormWindowState.Maximized;
child.Show();
}
}
Вы увидите, что глифы min / max / restore отображаются дважды, при восстановлении дочернего окна на экране остается панель MDI, как и на вашем первом снимке экрана. Обходной путь заключается в перемещении дочернего кода создания в метод OnLoad(). Вот так:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
var child = new Form2();
child.MdiParent = this;
child.WindowState = FormWindowState.Maximized;
child.Show();
}
}
Ответ №2:
При желании вы можете использовать свойства ControlBox, FormBorderStyle, MaximizeBox
и MinimizeBox
для удаления различных элементов пользовательского интерфейса window из формы.