Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторные / Программиров лаб_6_2014 windows приложение.doc
Скачиваний:
65
Добавлен:
21.03.2015
Размер:
933.89 Кб
Скачать

OpenFileDialog и SaveFileDialog для sdi-приложений

При создании MDI-приложений приходится разделять код для открытия и сохранения файлов, как мы делали для приложения Notepad C#. В случае SDI-приложений весь код будет находиться в одном обработчике. Cоздаем новое приложение, называем его TextEditor. На форме размещаем элемент управления TextBox и устанавливаем следующие свойства:

TextBox, свойство

Значение

Name

txtBox

Dock

Fill

Multiline

true

Text

Да

Добавляем на форму элемент MainMenu, в котором будет всего три пункта — File, Open и Save (свойства этих пунктов см. в таблице 3.1). Из окна ToolBox перетаскиваем элементы OpenFileDialog и SaveFileDialog — свойства этих элементов в точности такие же, как и у диалогов приложения Notepad C#. Переходим в код формы. Подключаем пространство имен для работы с файловыми потоками:

using System.IO;

Добавляем обработчик для пункта меню Open:

private void mnuOpen_Click(object sender, System.EventArgs e){

//Показываем диалог выбора файла

openFileDialog1.ShowDialog();

// Переменной fileName присваиваем имя открываемого файла

string fileName = openFileDialog1.FileName;

//Создаем поток fs и открываем файл для чтения.

FileStream filestream= File.Open(fileName, FileMode.Open, FileAccess.Read);

//Проверяем, открыт ли поток, и если открыт, выполняем условие

if(filestream != null) {

//Создаем объект streamreader и связываем его с потоком filestream

StreamReader streamreader = new StreamReader(filestream);

//Считываем весь файл и записываем его в TextBox

txtBox.Text = streamreader.ReadToEnd();

//Закрываем поток.

filestream.Close();

}

}

Добавляем обработчик для пункта меню Save:

private void mnuSave_Click(object sender, System.EventArgs e) {

//Показываем диалог выбора файла

saveFileDialog1.ShowDialog();

// В качестве имени сохраняемого файла устанавливаем переменную fileName

string fileName=saveFileDialog1.FileName;

//Создаем поток fs и открываем файл для записи.

FileStream filestream = File.Open(fileName, FileMode.Create, FileAccess.Write);

//Проверяем, открыт ли поток, и если открыт, выполняем условие

if(filestream != null) {

//Создаем объект streamwriter и связываем его с потоком filestream

StreamWriter streamwriter = new StreamWriter(filestream);

//Записываем данные из TextBox в файл

streamwriter.Write(txtBox.Text);

//Переносим данные из потока в файл

streamwriter.Flush();

//Закрываем поток

filestream.Close();

}

}

Запускаем приложение. Как уже отмечалось, элемент управления TextBox имеет встроенное контекстное меню, поддерживает сочетание клавиш для редактирования, а диалоговые окна открытия и сохранения позволяют этому простейшему приложению работать с внешними файлами.

FontDialog

Продолжим работу над приложением Notepad C#. Добавим теперь возможность выбирать шрифт, его размер и начертание. В режиме дизайна перетащим на форму frmmain из окна ToolBox элемент управления FontDialog. Не изменяя ничего в свойствах этого элемента, переходим в обработчик пункта Font главного меню:

private void mnuFont_Click(object sender, System.EventArgs e) {

//Переключаем фокус на данную форму.

blank frm = (blank)this.ActiveMdiChild;

//Указываем, что родительской формой является форма frmmain

frm.MdiParent = this;

//Вызываем диалог

fontDialog1.ShowColor = true;

//Связываем свойства SelectionFont и SelectionColor элемента RichTextBox

//с соответствующими свойствами диалога

fontDialog1.Font = frm.richTextBox1.SelectionFont;

fontDialog1.Color = frm.richTextBox1.SelectionColor;

//Если выбран диалог открытия файла, выполняем условие

if (fontDialog1.ShowDialog() == DialogResult.OK) {

frm.richTextBox1.SelectionFont = fontDialog1.Font;

frm.richTextBox1.SelectionColor = fontDialog1.Color;

}

//Показываем форму

frm.Show();

}

Запускаем приложение, и в окне Output появляется список ошибок. В чем же дело? При расположении на форме blank элемента управления RichTextBox среда Visual Studio.NET сгенерировала экземпляр richTextBox1 класса System.Windows.Forms.RichTextBox с модификатором доступа private, из-за чего при обращении к нему и возникает исключение:

private System.Windows.Forms.RichTextBox richTextBox1;

Изменим модификатор на public и снова запустим приложение. При выборе пункта меню Font теперь можно менять параметры текущего текста.

Соседние файлы в папке лабораторные