Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lektsia_7VP

.pdf
Скачиваний:
11
Добавлен:
27.05.2015
Размер:
569.02 Кб
Скачать

Многооконный

интерфейс

SDI = Single–Document Interface

MDI = Multiple–Document Interface

Родительские и дочерние формы

Родительская форма может содержать несколько дочерних окон. Только одно из дочерних окон может быть активно в один момент времени.

2

Создание родительской формы

IsMdiContainer = true;

Установить компонент MenuStrip на форму

Создайте пункт меню верхнего уровня, свойству Text которого присвоено значение &File, с пунктами вложенного меню &New и &Close. Создайте также пункт меню верхнего уровня &Window.

Присвойте свойству MdiWindowListItem элемента

MenuStrip значение &Window ToolStripMenuItem.

3

private void newToolStripMenuItem_Click(object sender, EventArgs e)

{

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

}

this.newToolStripMenuItem.Click += new System.EventHandler(this.newToolStripMenuItem_Click);

Задайте для свойства Anchor значение Top, Left Для свойства Dock значение Fill

4

Копирование данных.

Определение активной дочерней MDIформы.

Класс Clipboard

Метод SetDataObject вызывается, чтобы поместить данные в буфер обмена.

GetDataObject вызывается для того, чтобы извлечь данные из буфера обмена. Данные возвращаются как объект, реализующий интерфейс IDataObject.

DataFormats, GetFormats, GetData

5

Clear(), SetФормат (например SetText)

ContainsФормат (например ContainsText)

GetФормат (например GetText)

Добавьте данные как массив Byte в поток MemoryStream и передайте поток MemoryStream в метод SetData.

STAThreadAttribute

ActiveMdiChild, ActiveControl

6

private void copyToolStripMenuItem_Click(object sender, EventArgs e)

{

Form activeChild = this.ActiveMdiChild; if (activeChild != null)

{

try

{

RichTextBox theBox = (RichTextBox)activeChild.ActiveControl; if (theBox != null)

{

Clipboard.SetDataObject(theBox.SelectedText);

}

}

catch

{

MessageBox.Show("Надо выбрать RichTextBox.");

}

}

}

7

private void pasteToolStripMenuItem_Click(object sender, EventArgs e)

{

Form activeChild = this.ParentForm.ActiveMdiChild; if (activeChild != null)

{

try

{

RichTextBox theBox = (RichTextBox) activeChild.ActiveControl;

if (theBox != null)

{

IDataObject data = Clipboard.GetDataObject

();

if (data.GetDataPresent(DataFormats.Text))

{

theBox.SelectedText = data.GetData (DataFormats.Text).ToString();

}

}

}

catch

{

MessageBox.Show("Надо выбрать RichTextBox.");

 

}

}

8

}

 

Упорядочение дочерних форм интерфейса MDI

Метод LayoutMdi с перечислением MdiLayout

Cascade Все дочерние окна интерфейса MDI располагаются каскадом внутри клиентской области родительской формы MDI.

TileHorizontal Все дочерние окна интерфейса MDI располагаются сверху вниз в пределах клиентской области родительской формы MDI.

TileVertical Все дочерние окна интерфейса MDI располагаются слева направо в пределах клиентской области родительской формы MDI.

ArrangeIcons Все дочерние значки интерфейса MDI располагаются внутри клиентской области родительской формы MDI.

9

private void cascadeToolStripMenuItem_Click(object sender, EventArgs e)

{

this.LayoutMdi(MdiLayout.Cascade);

}

private void verticalToolStripMenuItem_Click(object sender, EventArgs e)

{

this.LayoutMdi(MdiLayout.TileVertical);

}

private void horizontalToolStripMenuItem_Click(object sender, EventArgs e)

{

this.LayoutMdi(MdiLayout.TileHorizontal);

}

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]