Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 161

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 155 156 157 158 159 160 < 161 > 162 163 164 165 166 167 .. 404 >> Следующая


// которые были включены, будут выведены ка экран thiB.lwFilesAndFolders.EndUpdate();

)

Catch (System.Exception err)

{

MessageBox.Show('Error: ' + err.Message);

)

)
340

Глава 13

До того как начинает выполняться первый из двух блоков foreach, мы обращаемся к методу Beginupdate () управляющего элемента Listview, Этот метод сообщает о том, что необходимо прекратить вносить изменения в видимую часть окна до тех пор, пока не будет вызван метод EndUpdate (>. Если не обратиться к этому методу, заполнение просматриваемого списка будет происходить медленнее, а сам список будет мелькать при добавлении новых элементов. Только после выполнения второго блока foreach мы обращаемся к методу Endupdateo, в результате чего управляющий элемент Listview выводит на экран все элементы, которые мы ему передали.

Интересующий нас код содержится в этих двух блоках foreach. Мы начинаем с того, что создаем новый экземпляр Listviewitem, а затем присваиваем его свойству Text нмя того файла или той папкн, которые собираемся вставлять. Значенне свойства image Index экземпляра Listviewitem указывает на индекс элемента, расположенного в одном из двух списков imageList. Именно по этой причине представляется важным, чтобы соответствующие рисунки имели одинаковые индексы в обоих списках imageList, Для хранения полностью квалифицированного пути как к папкам, так и к файлам, который может понадобиться в том случае, если пользователь щелкнет на данном элементе мышью два раза, используется свойство Tag.

Далее мы используем два субэлемента. Им просто присваивается текст, который необходимо вывести, после чего онн добавляются в семейство subitems экземпляра Listviewitem.

В завершение экземпляр Listviewitem добавляется в семейство items элемента Listview. Управляющий элемент Listview оказывается достаточно интеллектуальным, чтобы игнорировать любые субэлементы, еслн используется какой-либо режим вывода, отличный от Details, поэтому субэлементы добавляются независимо от того, какой именно режим установлен в настоящий момент.

Все, что остается сделать, чтобы включить в просматриваемый список корневую папку,— это вызвать две функции в конструкторе формы. Одновременно мы создаем экземпляр foiderCol семейства stringCoiiection с корневой папкой:

InitializeComponentI>;

// Инициализация Listview и семейства палок

foiderCol ¦ new System.Collections.Specialized.StringCoiiection() ;

CreateHeadersAndFillListviewO j . PaintListview(®"C:\*)i

folderCol.Add(epC:V) I

Чтобы иметь возможность перемещаться по папкам, изображенным в управляющем элементе Listview, посредством двойного щелчка на папке мышью, необходимо подписаться иа событие itemActivate. Это также выполняется в конструкторе;

this.lwFilesAndFolders.ItenActivate +=» new

system.BventHendler(thi*.lwFilesAndFolders_ItemActivate);

Обработчик соответствующего события выглядит следующим образом:

private void lwFilesAndFolderg_It*i ctivate(object sender, system.EventArgs e)

(

// Приведение тем отправляемого объекта к типу Listview и получение тега // первого выбранного элемента. '

System.Windows.Forma.Listview lw * (System.Windows.Forms.Listview)senderj string filename ¦ Iw.SelectedltemstO].Tag.ToString0

if (lw.SelectedltemsCO].I«ag :ndex t* 0)

{

try
Использование управляющих элементов Windows Form________________________________________________341

.j

// Попьггха запустить файл. -

System.Diagnostics.Process.Start(filename);

J *¦

catch (

11 Если попытка оканчивается неудачей, то мы просто выходим

Н из данного метод

rotumj

)

)

elee

{

Ц Включение элементов Paii Listview(filename);

folderCol,Add(filename)j -

) ,

)

Свойство таи выбранного элемента содержит полностью заданный путь к тому файлу (папке), на котором был произведен двойной щелчок мышью. Известно, что рисунок с индексом 0 представляет собой папку, поэтому с помощью этого индекса можно определить, является ли данный объект файлом нлн папкой. Если этот объект — файл, то предпринимается попытка загрузить его.

Если этот объект является папкой, то вызывается метод PaintListview с именем новой папки, а затем добавляется новая папка в семейство folderCol.

Перед тем как перейти к переключателям, расширим наши поисковые возможности, добавив событие “щелчок мышью” для кнопки Back. Щелкните на этой кнопке мышью два раза и вне -ите в обработчик события следующий код:

private void btnBack^CH-clc (object sender. System.EventArgs e)

(

if (folderCol.Count: > 1)

1

PaintListview(folderCol[folderCol.Count-3].ToString0)t folderCol.RemoveAt(folderCol.Count-1);

)

else '

{

PaintListview(folderCol[0] .ToStringO );

)

Если семейство folderCol состоит более, чем нз одного элемента, то это значит, что мы находимся не в корн^ просмотра, н мы вызываем метод PaintListview с указанием пути к предшествующей папке. Последним элементом в семействе является текущая папка, поэтому нам потребуется второй последний элемент. Затем мы удаляем последний элемент семейства и делаем текущим тот новый элемент, который стал последним в результате этого. Еслн в семействе имеется всего один элемент, то мы просто вызываем метод PaintListview с этим элементом.
Предыдущая << 1 .. 155 156 157 158 159 160 < 161 > 162 163 164 165 166 167 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.