Классы WindowsForms элементов управления для работы со структурами данных Control ListViewTreeViewListControl ComboBoxListBox CheckedListBox DataGridViewDataGrid
Элементы управления ListBox, ComboBox, ListView Используются для выбора одного или нескольких элементов из списка. Отдельные элементы списка хранятся в коллекции, для которой определен вложеннный в класс тип. Коллекция доступна через свойство Items в классах ListBox и ComboBox и ListViewItems в классе ListView. Класс ListControl – абстрактный базовый. Элемент управления ComboBox объединяет ListBox и TextBox. В элементе управления CheckedListBox выбранные пользователем элементы отмечаются галочкой. В элемент управления ListView можно вывести список элементов - текстовых строк вместе с изображеиями – в пяти различных представлениях.
Класс ListBox public ListBox.ObjectCollection Items {get;} public ListBox.SelectedObjectCollection SelectedItems {get;} public ListBox.SelectedIndexCollection SelectedIndices {get;} В классе определены три коллекции и три свойства для доступа к коллекциям. public virtual SelectionMode SelectionMode {get; set;} Свойство SelectionMode определяет тип управляющего элемента – список без выбора элементов, или с выбором одного или нескольких элементов из списка. public override int SelectedIndex {get; set;} public object SelectedItem {get; set;} В элементе управления ListBox с возможностью выбора только одного элемента из списка выбор пользователя доступен через свойства
События класса ListBox public event EventHandler SelectedIndexChanged; При выборе нового элемента в списке ListBox происходит событие В примере при выборе пользователем элемента списка выводится номер выбранного элемента: private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) { MessageBox.Show(listBox1.SelectedIndex.ToString()); current = listBox1.SelectedIndex; }
Класс ComboBox Элемент управления ComboBox объединяет ListBox и TextBox. Класс ComboBox поддерживает три режима работы, которые определяются значением свойства public ComboBoxStyle DropDownStyle {get; set;} Значения перечисления ComboBoxStyle DropDown Текст в текстовом поле ввода можно редактировать. Список можно закрыть/открыть. DropDownList Текст в текстовом поле нельзя редактировать. Список можно закрыть/открыть. Simple Текст в текстовом поле ввода можно редактировать. Список всегда открыт.
Класс ComboBox -2 public ComboBox.ObjectCollection Items {get;} В классе определено свойство для доступа к коллекции всех элементов. public override int SelectedIndex {get; set;} public object SelectedItem {get; set;} public string SelectedText {get; set;} Из списка ComboBox пользователь может выбрать только один элемент, который выводится в текстовое поле. Элемент, выбранный пользователем, доступен через свойства При выборе нового элемента происходят события public event EventHandler DropDown; public event EventHandler SelectedIndexChanged; public event EventHandler SelectionChangeCommitted;
Инициализация ListBox и ComboBox Два способа инициализации элементов управления ListBox и ComboBox : методы интерфейса IList, реализованные в коллекциях ListBox.ObjectCollection и ComboBox.ObjectCollection; использование механизма привязки данных (data binding).
Cвойство DataSource класса ListControl public object DataSource {get; set;} Механизм привязки данных для классов ListBox и ComboBox реализован в абстрактном базовом классе ListControl. Свойство DataSource класса ListControl дает возможность связать элемент управления с данными программы – источником данных. Как источник данных для элементов управления ListBox и ComboBox можно использовать объект любого типа, в котором реализован интерфейс IList, т.е. источником данных служит объект, представляющий собой коллекцию элементов типа Object. Если с элементом управления ListBox или ComboBox связан источник данных, нельзя изменять коллекцию Items с помощью методов Add, Remove и т.д.
Свойства DisplayMember и ValueMember public string DisplayMember {get; set;} По умолчанию при заполнении элементов управления ListBox и ComboBox элементы коллекции-источника данных преобразуются к символьному виду с помощью метода ToString(). Свойство DisplayMember класса ListControl дает возможность выводить не весь элемент коллекции-источника данных, а только значения одного из открытых свойств элементов, из которых состоит коллекция-источник. Свойство DisplayMember имеет тип string и задает имя свойства, которое будет выводиться в элемент управления. По умолчанию значение равно. Свойство ValueMember задает имя свойства, которое будет определять значение для элемента, который выбрал пользователь. Значение можно получить через свойство SelectedValue. public string ValueMember {get; set;} public object SelectedValue {get; set;}
События класса ListControl public event EventHandler DataSourceChanged; public event EventHandler DisplayMemberChanged; public event EventHandler SelectedValueChanged; public event EventHandler ValueMemberChanged; В классе ListControl определены события, которые сообщают об изменениях, связанных с источником данных.
Класс ListView В элемент управления ListView можно вывести список элементов - текстовых строк вместе с изображеиями – в пяти различных представлениях. Элементы списка имеют тип ListViewItem. Для коллекции элементов определен вложенный тип ListViewItemCollection. Коллекция доступна через свойство Items. public ListView.ListViewItemCollection Items { get; } При выборе элемента происходит событие public ListView.SelectedListViewItemCollection SelectedItems { get; } public ListView. SelectedIndexCollection SelectedIndices { get; } public ListView. CheckedListViewItemCollection CheckedItems { get; } public ListView. ColumnHeaderCollection Columns { get; } В классе определены свойства и типы для коллекций event ListViewItemSelectionChangedEventHandler ItemSelectionChanged; В WindowsForms не поддерживается источник данных для элемента управления ListView.