Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_1 / С_12_Работа с несколькими формами.ppt
Скачиваний:
19
Добавлен:
19.04.2015
Размер:
2.73 Mб
Скачать

4. Организуем создание нового дочернего окна при выборе пункта New меню File.

Для этого реализуем обработку события Click этого пункта.

private void newToolStripMenuItem_Click (object sender, EventArgs

e)

{

Form2 child = new Form2(); child.MdiParent = this; child.Show();

}

Теперь в рамках нашего проекта можно открывать сколько угодно дочерних MDI форм.

Для управления дочерними окнами со стороны обрамляющей формы последняя имеет следующие свойства:

Свойство

Тип

Описание

ActiveMdiChi

Form

Указатель на активную дочернюю форму

ld

 

 

MdiChildren

Form[

Массив форм, представляющий дочерние

 

]

MDI-формы

MdiChildren.

int

Количество открытых дочерних форм

Length

 

 

5. Дадим новым дочерним (типа «Окно 1», «Окно

Для этого изменим код пункта New меню File

private void newToolStripMenuItem

e)

{

Form2 child = new Form2(); child.MdiParent = this; child.Text = "Окно " +

this.MdiChildren.Length.ToString();

child.Show();

}

6. формы. «Каскад», укажем

{

}

{

}

private void

{

this.

}

В том же меню Windows включим отображение имён всех открытых дочерних окон.

Для этого у компонента MenuStrip, представляющего контейнер главного меню, свойству MdiWindowListItem присвоим значение windowToolStripMenuItem – указание на пункт Windows.

7. Реализуем реализуем обработку выбора пунктов «Close» и «Exit» из меню «File».

private void closeToolStripMenuItem_Click (object sender, EventArgs e)

{

ActiveMdiChild.Close();

}

private void exitToolStripMenuItem_Click (object sender, EventArgs

e)

{

this.Close();

}

Внимание!

Работать с текущим дочерним окном можно, если оно существует. При обращении к свойству ActiveMdiChild при отсутствии дочерних окон произойдёт исключение (сбой программы). Чтобы этого не случилось, желательно проверять, не является ли пустой ссылка

ActiveMdiChild.

private void closeToolStripMenuItem_Click (object sender, EventArgs e)

{

// ActiveMdiChild.Close();

Form ActiveChild = ActiveMdiChild;

if (ActiveChild !=null) ActiveChild.Close();

}

8. В меню «Edit» добавим пункт «Свернуть все окна».

private void toolStripMenuItem2_Click (object sender, EventArgs e)

{

for (int x = 0; x < this.MdiChildren.Length; x+ +)

{

Form2 Child = (Form2)this.MdiChildren[x]; Child.WindowState =

}

}

9. В меню «Edit» добавим пункт «Окрасить окна в красный цвет».

Т.к. вся клиентская область дочерних окон задана компонентом RichTextBox, то окрашивать в красный цвет нужно именно его.

Однако, вроде бы правильный код не работает

private void toolStripMenuItem3_Click (object sender, EventArgs e)

{

for (int x = 0; x < this.MdiChildren.Length; x+ +)

{

Form2 Child = (Form2)this.MdiChildren[x]; Child.richTextBox1.BackColor = Color.Red;

}

}