Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Элементы управления спискамиСодержание книги
Поиск на нашем сайте
ListBox Представляет собой обычный список. Содержит коллекцию элементов ListBoxItem, которые являются типичными элементами управления содержимым. Также ListBox может содержать любые другие элементы, например:
Все эти элементы будут находиться в коллекции phonesList.Items и, таким образом, по счетчику можно к ним обращаться, например, phonesList.Items[0] - первый элемент ListBox, который в данном случае представляет TextBlock. Также мы можем установить элемент: phonesList.Items[2]="LG G 4"; Добавление в ListВох выполняется с помощью phonesList.Items.Add().Обрабатывая событие SelectionChanged, мы можем динамически получать выделенный элемент. TreeView Данный элемент управления предназначен для древовидного отображения данных в окне приложения. Может содержать как коллекцию элементов TreeViewItem, так и другое содержимое, например, текстовые блоки.
Однако все же лучше обертывать элементы в объекты TreeViewItem. С помощью его свойства Header мы можем установить текстовую метку или заголовок узла дерева.
Программное добавление узлов в TreeView: TreeViewItem dirNode = new TreeViewItem();// создание узла dirNode.Tag = “доп. информация”;// поле для доп. информации (не обяз.) dirNode.Header =”название узла”; driveNode.Items.Add(dirNode);// добавление узла в дерево driveNode В поле Tag при формировании дерева каталогов можно хранить информацию любого типа, например, чтобы иметь всю информацию о папке, можно писать туда тип DirectoryInfo. Чтобы отследить выбор или раскрытие узла, мы можем обработать соответствующие события. Событие Expanded возникает при раскрытии узла, а событие Collapsed, наоборот, при его сворачивании. Выбор узла дерева мы можем обработать с помощью обработки события Selected. <TreeView> <TreeViewItem Header="C-языки" Expanded="TreeViewItem_Expanded"> <TreeViewItem Header="C#" Selected="TreeViewItem_Selected" /> <TreeViewItem Header="C/C++" Selected="TreeViewItem_Selected" /> <TreeViewItem Header="Java" Selected="TreeViewItem_Selected" /> </TreeViewItem> </TreeView> Теперь добавим в файл связанного кода C# обработчики для этих событий: private void TreeViewItem_Expanded(object sender, RoutedEventArgs e) { TreeViewItem tvItem = (TreeViewItem)sender; // или TreeViewItem tvItem = (TreeViewItem)e.OriginalSource; MessageBox.Show("Узел " + tvItem.Header.ToString() + " раскрыт"); }
private void TreeViewItem_Selected(object sender, RoutedEventArgs e) { TreeViewItem tvItem = (TreeViewItem)sender; MessageBox.Show("Выбран узел: " + tvItem.Header.ToString()); } ListView Этот элемент управления отображает информацию на множестве строк и столбцов. Он унаследован от класса ListBox, поэтому может вести себя как простой список: <ListView> <TextBlock>LG Nexus 5X</TextBlock> <TextBlock>Huawei Nexus 6P</TextBlock> <TextBlock>iPhone 6S</TextBlock> <TextBlock>iPhone 6S Plus</TextBlock> <TextBlock>Аsus Zenphone 2</TextBlock> <TextBlock>Microsoft Lumia 950</TextBlock> </ListView> Добавление в такой простой ListView выполняется с помощью ListView.Items.Add(). Но чтобы создать более сложные по структуре данные (несколько столбцов) один из вариантов сделать следующим образом: 1) описать класс, содержащий свойства, соответствующие столбцам таблицы; 2) Сгенерировать список, элементами которого являются объекты описанного выше класса; 3) Задать этот список в свойство ItemsSource элемента ListView; 4) определить свойство View элемента ListView. Это свойство принимает в качестве значения объект DataView, который управляет отображением данных. DataView определяет коллекцию определений столбцов - GridViewColumn, которое с помощью свойства Header определяет название столбца, а с помощью свойства DisplayMemberBinding можно определить привязку столбца к определенному свойству добавляемого в ListView объекта. Добавлять новый элемент надо не напрямую в ListView, а в коллекцию, к которой идет привязка, а затем уже обновить ListView. Можно сделать по-другому: использовать коллекцию ObservableCollection. Она по функциональности похожа на список List за тем исключением, что позволяет известить внешние объекты о том, что коллекция была изменена. Таким образом формирование ListView будет иметь вид: код разметки: <ListView Name="listview1"> <ListView.View> <GridView> <GridViewColumn Header="name" DisplayMemberBinding="{Binding Path=name}"/> <GridViewColumn Header="time" DisplayMemberBinding="{Binding Path=time}"/> </GridView> </ListView.View> </ListView> код: public class info { public string name { get; set; } public string time { get; set; } public info(string n, string t) { name = n; time = t; } } public partial class MainWindow: Window {
public List<info> listview; public ObservableCollection<info> _someInfos; public MainWindow() { InitializeComponent(); _someInfos = new ObservableCollection<info>(); listview1.ItemsSource = _someInfos; } … // когда выбрали узел в дереве (каталог), в listview отображаем имя и дату создания //файлов этого каталога private void treeview1_Selected(object sender, RoutedEventArgs e) { TreeViewItem t = (TreeViewItem)e.OriginalSource; DirectoryInfo d = (DirectoryInfo)(t.Tag); var f = d.GetFileSystemInfos();// получаем список файлов _someInfos.Clear(); foreach (FileSystemInfo current in f) {// добавляем в коллекцию. Одновременно будет обновляться listview _someInfos.Add(new info(current.Name, current.CreationTime.ToShortDateString())); } } Обрабатывая событие SelectionChanged, мы можем динамически получать выделенный элемент. ComboBox ComboBox содержит коллекцию элементов и образует выпадающий список:
<ComboBox Name="phonesList" Height="30" VerticalAlignment="Top"> <TextBlock>LG Nexus 5X</TextBlock> <TextBlock>Huawai Nexus 6P</TextBlock> <TextBlock>iPhone 6S</TextBlock> <TextBlock>iPhone 6S Plus</TextBlock> <TextBlock>Microsoft Lumia 950</TextBlock> </ComboBox> Программное заполнение выполняется методом combobox1.Items.Add(“Name”); Свойство SelectedIndex позволяет считывать или устанавливать выделенный элемент списка: combobox1.SelectedIndex = 0; Обрабатывая событие SelectionChanged, мы можем динамически получать выделенный элемент:
Обработка события в коде C#:
Управление каталогами В пространстве имен System.IO есть четыре класса, предназначенные для работы с физическими файлами и структурой каталогов на диске: Directory, File, DirectoryInfo и FileInfo. С их помощью можно выполнять создание, удаление, перемещение файлов и каталогов, а также получение их свойств. Основные элементы этих классов представлены в таблицах 5.1 и 5.2. Таблица 5.1 - Свойства класса FileSystemInfo Свойства Описание Attributes Получить или установить атрибуты для данного объекта файловой системы. Для этого свойства используется значение FileAttributes CreationTime Получить или установить время создания объекта файловой системы Exists Определить, существует ли данный объект файловой системы Extension Получить расширение файла FullName Возвратить имя файла или каталога с указанием полного пути LastAccessTime Получить или установить время последнего обращения к объекту LastWriteTime Получить или установить время последнего внесения изменений в объект Name Возвратить имя файла. Это свойство доступно только для чтения. Для каталогов возвращает имя последнего каталога в иерархии, если это возможно. Если нет, возвращает полностью определенное имя Таблица 5.2 - Элементы класса DirectoryInfo Элемент Описание Create, Создать каталог или подкаталог по указанному пути в файловой системе CreateSubDirectory Delete Удалить каталог со всем его содержимым GetDirectories Возвратить массив строк, представляющих все подкаталоги GetFiles Получить файлы в текущем каталоге в виде массива объектов класса FileInfo MoveTo Переместить каталог и все его содержимое на новый адрес в ФС Parent Возвратить родительский каталог
Пример работы с файлами и каталогами с использованием класса Directory В данном примере создаются два каталога, выводится информация о них и предпринимается попытка удаления каталога. using System; using System.IO; namespace ConsoleApplication1 { class Class1 { static void DirInfo(DirectoryInfo di) { //вывод информации о каталоге Console.WriteLine("=====Directory Info====="); Console.WriteLine("FullName:" + di.FullName); Console.WriteLine("Name:" + di.Name); Console.WriteLine("Parent:" + di.Parent); Console.WriteLine("Creation:" + di.CreationTime); Console.WriteLine("Attributes:" + di.Attributes); Console.WriteLine("Root:" + di.Root); Console.WriteLine("=========================="); } static void Main() { DirectoryInfo di1 = new DirectoryInfo(@"с:\MyDir"); DirectoryInfo di2 = new DirectoryInfo(@"c:\MyDir\temp"); try { //Создать каталоги di1.Create(); di2.Create(); //Вывести информацию о каталогах DirInfo(di1); DirInfo(di2); //Попытаться удалить каталог Console.WriteLine("Попытка удалить {0}.", di1.Name); di1.Delete(); } catch (Exception) { Console.WriteLine("Попытка не удалась"); } } } * Результат работы программы * =====Directory Info===== * FullName: c:\MyDir * Name: MyDir * Parent: * Creation: 30.04.2006 17:14:44 * Attributes: Directory * Root: c:\ * ======================== * =====Directory Info===== * FullName: c:\MyDir\temp * Name: temp * Parent: * Creation: 30.04.2006 17:14:44 * Attributes: Directory * Root: c:\ * ======================== * Попытка удалить MyDir * Попытка не удалась Каталог не пуст, поэтому попытка его удаления не удалась. Однако, если использовать метод Delete с одним параметром, задающим режим удаления, можно удалить и непустой каталог: di1.Delete(true); //удаляет непустой каталог Пример работы с файлами и каталогами с использованием класса FileInfo В данном примере копируются все файлы с расширением jpg из каталога d:\foto в каталог d:\temp. Метод Exists позволяет проверить, существует ли исходный каталог. using System; using System.IO; namespace ConsoleApplication1 { class Class1 { static void Main() { try { string DestName = @"d:\temp\"; DirectoryInfo dest = new DirectoryInfo(DestName); dest.Create(); //создание целевого каталога DirectoryInfo dir = new DirectoryInfo(@"d:\foto"); if (!dir.Exists) //проверка существования каталога { Console.WriteLine("Каталог " + dir.Name + " не существует"); Console.ReadKey(); return; } FileInfo[] files = dir.GetFiles("*.jpg"); //список файлов foreach (FileInfo f in files) f.CopyTo(dest + f.Name); //копирование файла Console.WriteLine("Скопировано" + files.Length + "jpg-файлов"); } catch (Exception e) { Console.WriteLine("Error:" + e.Message); } } } }
В библиотеке классов Microsoft.NET Framework предусмотрено мощное средство работы с каталогами — класс Directory. С помощью статических методов этого класса программа может выполнять такие действия, как получение списка логических дисков, определение текущего каталога, просмотр содержимого каталогов, создание и удаление каталогов, проверка их существования и пр. Получить список всех логических дисков, имеющихся в системе, можно статическим методом Directory. GetLogicalDrives: String[ ] drives = Directory.GetLogicalDrives(); foreach(string s in drives) Console.Write{"{0} ", s); Этот метод не имеет параметров. После выполнения он возвращает ссылку на массив текстовых строк вида «С: \» с обозначениями всех доступных логических дисковых устройств. Определение полного пути к текущему каталогу: string currentDir = Directory.GetCurrentDirectory(); Метод возвращает этот путь в виде текстовой строки класса string. Определение диска, на котором находится любой каталог. В качестве параметра передается путь к нужному каталогу: string directoryRoot = Directory.GetDirectoryRoot(currentDir);
|
|||||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 102; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.105.199 (0.009 с.) |