Следующей по очереди на инструментальной панели находится кнопка открытия файла – команда LoadT. Рассмотрим порядок действий при написании этого обработчика события.
Для того чтобы реализовать в нашем приложении обработчик открытия файла, нам потребуется элемент OpenFileDialog. Перетащим значок этого элемента из окна Toolbox в окно нашей формы. Значок элемента OpenFileDialog1 появится внизу на панели под нашей формой (смотри рисунок 5.1).
Рисунок 5.1 – Подключение элемента OpenFileDialog
Использование элемента OpenFileDialog (особенно в части диалога) это целая технология программирования, позволяющая просто обращаться к дискам, папкам и файлам нашего компьютера. Как и любой элемент окна Toolbox он представлен классом, имеющим множество методов для работы с файлами, например, метод openFileDialog1.ShowDialog, отображает на экране стандартное диалоговое окно выбора файла (смотри рисунок 5.2), в котором можно «путешествовать» по компьютеру в поисках нужного файла.
Настраивая свойства элемента openFileDialog1, можно задать фильтр имен открываемых файлов. Для этого необходимо элементу openFileDialog1 в окне Properties изменить свойство Filter. Присвойте этому свойству следующую текстовую строку:
Text files|*.txt|RTF files|*.rtf| All files|*.*
Строка фильтра состоит из блоков, разделенных символом «|». Первый блок задает название типа файла Text files, а второй— маску для имен файлов. Для текстовых файлов применяется маска *.txt.
Далее следует название формата RTF files. Для RTF используется маска *.rtf.
И, наконец, чтобы приложение могло открывать файлы любых типов (All files), используется маска *.* (пример на рисунке 5.2).
Рисунок 5.2 – Работа программы при открытии диалогового окна
По условию задачи мы будем работать с текстовыми файлами, но можно посмотреть, что читается при выборе файлов другого типа.
Дополнение к исходному коду программы:
private void loadTToolStripMenuItem_Click(object sender,
EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK &&
openFileDialog1.FileName.Length > 0)
{
try
{
richTextBox1.LoadFile(openFileDialog1.FileName,
RichTextBoxStreamType.PlainText);
}
catch (System.ArgumentException ex)
{
richTextBox1.LoadFile(openFileDialog1.FileName,
RichTextBoxStreamType.RichText);
}
this.Text = "Файл [" + openFileDialog1.FileName + "]";
}
}
Если в окне выбора файла пользователь щелкнул кнопку Открыть, метод ShowDialog возвращает значение DialogResult.OK. В условие включена дополнительная проверка, что файл был выбран (длина строки полного пути к выбранному файлу openFileDialog1.FileName.Length должна быть больше нуля).
При открытии файла методом richTextBox1.LoadFile ему передается два параметра. В качестве первого параметра этому методу передается путь к файлу, а в качестве второго — тип файла.
Поскольку мы должны работать с текстовыми файлами, то основным типом является RichTextBoxStreamType.PlainText.
В том случае, если выбранный файл имеет формат, отличный от PlainText в методе LoadFile возникает исключение System.ArgumentException и наш обработчик выполняет повторную попытку загрузить файл, но на этот раз уже как файл типа RichText. Этот тип соответствует формату RTF.
Дополнительно, для информации, полный путь к открытому файлу будет отображен в заголовке главного окна нашего приложения.