Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Отображение содержимого текстовых файлов




Итак, теперь наше приложение может отображать в левом фрейме дерево каталогов, а в правом верхнем фрейме — содержимое выбранных каталогов. Остался незадействованным только правый нижний фрейм, в котором расположено окно текстового редактора RichTextBox.

Предусмотрев обработчик события ItemActivate к элементу управления ListView, мы сможем отображать в окне текстового редактора содержимое текстовых файлов, отображаемых в правом верхнем фрейме. Это событие возникает, когда пользователь дважды щелкает строку в окне списка ListView.

Вот исходный текст нашего обработчика события ItemActivate:

private void listView1_OnItemActivate(object sender,
System.EventArgs e)
{
foreach(ListViewItem lvi in listView1.SelectedItems)
{
string ext = Path.GetExtension(lvi.Text).ToLower();
if(ext == ".txt" || ext == ".htm" || ext == ".html")
{
try
{
richTextBox1.LoadFile(Path.Combine(fullPath, lvi.Text),
RichTextBoxStreamType.PlainText);

statusBar1.Text = lvi.Text;
}
catch
{
return;
}
}
else if(ext == ".rtf")
{
try
{
richTextBox1.LoadFile(Path.Combine(fullPath, lvi.Text),
RichTextBoxStreamType.RichText);

statusBar1.Text = lvi.Text;
}
catch
{
return;
}
}
}
}

Получив управление, обработчик событий, прежде всего, должен получить список элементов, выделенных пользователем в окне списка. Эта операция выполняется в цикле:

foreach(ListViewItem lvi in listView1.SelectedItems)
{

}

Идентификаторы выделенных элементов хранятся в наборе listView1.SelectedItems.

В общем случае пользователь может выделить несколько элементов, однако если пользователь щелкнул строку дважды, то в результате окажется выделенной только эта строка. Поэтому наш цикл выполнит только одну итерацию.

Так как редактор RichTextBox способен отображать содержимое только текстовых файлов, нам необходимо определить тип файла, выбранного пользователем. Мы делаем это, анализируя расширение имени файла, полученное с помощью метода GetExtension (с преобразованием символов расширения в строчные символы):

string ext = Path.GetExtension(lvi.Text).ToLower();

Если расширение имени соответствует текстовому файлу или файлу HTML, то мы загружаем содержимое файла в окно редактора RichTextBox, пользуясь для этого методомLoadFile:

if(ext == ".txt" || ext == ".htm" || ext == ".html")
{
try
{
richTextBox1.LoadFile(Path.Combine(fullPath, lvi.Text),
RichTextBoxStreamType.PlainText);

statusBar1.Text = lvi.Text;
}
catch
{
return;
}
}

В качестве первого параметра методу передается полный путь к файлу, полученный комбинированием полного пути каталога fullPath, выделенного в дереве, и имени файлаlvi.Text, выделенного в списке ListView.

Через второй параметр методу LoadFile передается тип загружаемого документа, заданный как RichTextBoxStreamType.PlainText (т.е. текстовый документ).

Дополнительно имя документа отображается в строке состояния главного окна приложения, для чего это имя переписывается из свойства lvi.Text в свойствоstatusBar1.Text.

Обработка файлов с документами типа RTF, имеющих расширение имени rtf, выполняется аналогично. При этом тип документа указывается методу LoadFile как RichTextBoxStreamType.RichText.

На рис. 11 мы показали внешний вид главного окна нашего приложения, когда в нижний правый фрейм загружен документ RTF.

Рис. 11. Просмотр документа RTF в окне нашего приложения

Приложения MDI

Многие пользователи ОС Microsoft Windows хорошо знакомы с многооконным интерфейсом MDI (Multiple Document Interface), позволяющим в одном приложении работать одновременно с несколькими документами или с разными представлениями одного и того же документа.

Этот интерфейс был впервые описан в руководстве по разработке интерфейса пользователя System Application Architecture Common User Access Advanced Interface DesignGuide (SAA/CUA), созданном IBM. Интерфейс MDI использовался в ОС Microsoft Windows, начиная с версии 3.0, а также в графической оболочке Presentation Manager операционной системы OS/2. Современные версии ОС Microsoft Windows также позволяют создавать приложения с интерфейсом MDI (MDI-приложения).

В начале этой главы мы упоминали программу Registry Editor (рис. 7-3), использующую интерфейс MDI. Этим интерфейсом был снабжен и текстовый процессор Microsoft Word for Windows версии 2.0, способный предоставить пользователю два различных представления одного и того же документа. В одном окне могло отображаться, например, обычное представление документа, а в другом — представление в режиме просмотра оглавления документа.

Окна, отображающие содержимое документов внутри главного окна MDI-приложения, называются MDI-окнами.




Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 653; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.