Создание MDI-приложений
Такие программы, как блокнот и Microsoft Paint, относятся к SDI (Single — Document Interface) приложениям, способным работать только с одним документом. Другие, такие как Microsoft Word или Adobe Photoshop, поддерживают работу сразу с несколькими документами и называются MDI (Multiple — Document Interface) приложениями (рис. 2.3 и 2.4).
увеличить изображение
Рис. 2.3. SDI приложение Microsoft Paint
увеличить изображение
Рис. 2.4. MDI-приложение Adobe Photoshop
В MDI-приложениях главная форма содержит в себе несколько документов, каждый из которых является холстом в графических программах или полем для текста в редакторах. Продолжим работу над приложением Notepad C#. В окне Solution Explorer щелкаем правой кнопкой на имени проекта и в появившемся контекстном меню выбираем Add/ Add Windows Form… . В появившемся окне называем форму – blank.cs. В нашем проекте появилась новая форма — будем называть ее дочерней. В режиме дизайна перетаскиваем на нее элемент управления RichTextBox: в отличие от элемента textBox, размер содержимого текста в нем не ограничивается 64 Кб; кроме того, RichTextBox позволяет редактировать цвет текста, добавлять изображения. Свойству Dock этого элемента устанавливаем значение Fill (рис. 2.5):
Рис. 2.5. Свойство Dock элемента RichTextBox
Переходим в режим дизайна формы Frmmain и устанавливаем свойству IsMdiContainer значение true. Цвет формы при этом становится темно-серым. Новые документы будут у нас появляться при нажатии пункта меню New (которому мы установили сочетание клавиш Ctrl+N), поэтому дважды щелкаем в этом пункте и переходим в код:
private void mnuNew_Click(object sender, System.EventArgs e) { //Создаем новый экземпляр формы frm blank frm = new blank(); //Указываем, что родительским контейнером //нового экземпляра будет эта, главная форма. frm.MdiParent = this; //Вызываем форму frm.Show(); }
Запускаем приложение. Теперь при нажатии клавиш Ctrl+N или выборе пункта меню New появляется несколько окон, расположенных каскадом. Однако заголовок у них всех одинаковый — blank. При создании нескольких документов, например в Microsoft Word, они называются ДокументN, где N — номер документа. Переключаемся в код формы blank, и в классе blank объявляем переменную DocName:
public string DocName = "";
Переключаемся в код формы frmmain и в классе frmmain объявляем переменную openDocuments:
private int openDocuments = 0;
Присваиваем переменной DocName часть названия по шаблону, в который включен счетчик числа открываемых документов, затем это значение передаем свойству Text создаваемой формы frm:
private void mnuNew_Click(object sender, System.EventArgs e) { blank frm = new blank(); frm.DocName = "Untitled " + ++openDocuments; frm.Text = frm.DocName; frm.MdiParent = this; frm.Show(); }
Запускаем приложение. Теперь новые документы содержат разные заголовки (рис. 2.6).
Рис. 2.6. Новые документы имеют упорядоченные названия