Сериализация объектов

Каркас.NET Framework предоставляет технологию сериализации. Сериализация преобразовывает объекты, такие как классы, структуры и массивы в поток байтов. При преобразовании из последовательной формы в параллельную поток байтов преобразовывается обратно в объекты.

Чтобы информировать каркас, что класс может быть преобразован в последовательную форму, нужно пометить класс атрибутом [Serializable]. Любое поле или свойство, которые не должны быть преобразованы в последовательную форму, могут быть отмечены атрибутом [ NonSerialized ].

[Serializable] // Пример сериализации объекта класса Personage

public class Personage{

public Personage(string name, int age) {

this.name = name; this.age = age;

}

//поля класса

static int wishes;

public string name, status, wealth;

int age;

public Personage couple;

//методы класса

void SaveState(){ //сериализация в бинарном формате

BinaryFormatter bf = new BinaryFormatter();

FileStream fs = new FileStream ("State.bin",FileMode.Create, FileAccess.Write);

bf.Serialize(fs,this);

fs.Close();

}

void BackState(ref Personage fisher){ //десериализация в бинарном формате

BinaryFormatter bf = new BinaryFormatter();

FileStream fs = new FileStream ("State.bin",FileMode.Open, FileAccess.Read);

fisher = (Personage)bf.Deserialize(fs);

fs.Close();

}

}

Создание многооконного приложения

Разберем создание MDI приложений на примере разработки программы «Блокнот».

1. Создайте новое приложение (программа 5) и назовите его NotepadC#. Установите следующие свойства формы:

 

Form1, форма, Свойство Значение
Name Frmmain
Icon Путь C:\Program Files\Microsoft Visual Studio 9\Common7\VS2008ImageLibrary....
Text NotepadC#
WindowState Maximized

 

2. Создайте меню приложения. Для этого перетащите элемент управления menuStrip, расположенный на панели инструментов ToolBox, на форму и заполните строки меню следующими пунктами (рис. 4.1).

Для этого вызовите контекстное меню, установив курсор мыши на компоненте menuStrip1, расположенной на панели невидимых компонент, и выберите пункт Edit Items. Каждый пункт главного меню имеет свое окно свойств, в котором, подобно другим элементам управления, задаются значения свойств Name и Text (рис. 4.2). В поле Text перед словом New стоит знак & — так называемый амперсанд, указывающий, что N должно быть подчеркнута и будет частью встроенного клавиатурного интерфейса Windows. Когда пользователь на клавиатуре нажимает клавишу Alt и затем N, выводится подменю New.

 

 

 

Рисунок 4.1 - Пункты главного меню приложения NotepadC#

 

 

Рисунок 4.2 - Свойства пункта меню New

 

В Windows есть еще интерфейс для работы с так называемыми быстрыми клавишами, или акселераторами. Сочетание клавиш указывают из перечисления Shortcut. Следует назначать стандартным пунктам общепринятые сочетания клавиш. Горизонтальная разделительная линия используется в тех случаях, когда надо визуально отделить сходные группы задач; для ее появления в свойстве Text пункта меню просто вводим знак тире. Для использования пунктов меню в коде, им также назначают имена (свойство Name), которые особенно важны, т.к. пунктов меню обычно бывает много. Свойства пунктов меню в приложении NotepadC# приводятся в таблице 4.1.

 

Таблица 4.1. Пункты главного меню приложения NotepadC#

Name Text Shortcut
mnuFile &File  
mnuNew &New CtrlN
mnuOpen &Open CtrlO
mnuSave &Save CtrlS
menuItem5 -  
mnuExit &Exit AltF4
mnuEdit &Edit  
mnuCut Cu&t CtrlX
mnuCopy &Copy CtrlC
mnuPaste &Paste CtrlV
mnuDelete &Delete Del
mnuSelectAll &SelectAll CtrlA
mnuFormat F&ormat  
mnuFont Font…  
mnuColor Color…  
mnuWindow &Window  
mnuArrangeIcons Arrange Icons  
mnuCascade Cascade  
mnuTileHorizontal Tile Horizontal  
mnuTileVertical Tile Vertical  
mnuHelp ?  
mnuAbout About Programm...  

 

3. В MDI-приложениях главная форма содержит в себе несколько документов, каждый из которых является холстом в графических программах или полем для текста в редакторах. В окне Solution Explorer щелкаем правой кнопкой на имени проекта и в появившемся контекстном меню выбираем Add/ New Item/ Windows Form. В появившемся окне называем форму – blank.h. В нашем проекте появилась новая форма — будем называть ее дочерней. В режиме дизайна перетаскиваем на нее элемент управления RichTextBox: в отличие от элемента textBox, размер содержимого текста в нем не ограничивается 64 Кб; кроме того, RichTextBox позволяет редактировать цвет текста, добавлять изображения. Свойству Dock этого элемента устанавливаем значение Fill.

Переходим в режим дизайна формы frmmain и устанавливаем свойству IsMdiContainer значение true. Цвет формы при этом становится темно-серым. Новые документы будут у нас появляться при нажатии пункта меню New, поэтому дважды щелкаем в этом пункте и переходим в код.

При создании нескольких документов, например в Microsoft Word, они называются ДокументN, где N — номер документа. Переключаемся в код формы blank, и в классе blank объявляем переменную public String DocName;

Переключаемся в код формы frmmain и в классе frmmain объявляем переменную private int openDoc;

Присваиваем переменной DocName часть названия по шаблону, в который включен счетчик числа открываемых документов, затем это значение передаем свойству Text создаваемой формы frm:

private void mnunew_Click(object sender, EventArgs e) {

frm = new blank();

frm.DocName = "Untitled " + ++openDoc;

frm.Text = frm.DocName;

frm.MdiParent = this;

frm.Show();

}

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: