Программирование >>  Web ориентированные приложения 

1 2 3 4 [ 5 ] 6 7 8 ... 16


CheckBox

Элемент управления CheckBox (флажок) также унаследован от ButtonBase и применяется для принятия команды пользователя с двумя или тремя состояниями. Если свойство ThreeState установлено в true, то свойство CheckState элемента CheckBox может принимать одно из следующих трех перечислимых значений:

Checked Элемент CheckBox отмечен.

Unchecked Элемент CheckBox не отмечен.

Indeterminate В этом состоянии элемент CheckBox не доступен.

Состояние Indeterminate может быть установлено только программно, а не пользователем. Это удобно, если вы хотите сообщить пользователю, что опция не была установлена. Для получения текущего состояния в виде булевского значения можно обратиться к свойству Checked.

События CheckedChanged и CheckStateChanged возникают, когда изменяется свойство CheckState или Checked. Перехват этих событий может пригодиться для установки других значений на основе нового состояния CheckBox. В классе формы frmControls событие CheckedChanged для нескольких элементов CheckBox обрабатывается следующим методом:

private void checkBoxChanged(object sender, EventArgs e)

CheckBox checkBox = (CheckBox)sender;

MessageBox.Show( Новое значение + checkBox.Name + равно + checkBox.Checked.ToString());

При изменении состояния каждого из этих элементов отображается окно сообщения с именем элемента CheckBox и его новым состоянием.

RadioButton

Последний элемент управления, унаследованный от ButtonBase - это RadioButton (переключатель). Переключатели обычно используются в составе групп. Иногда называемые кнопками выбора (option buttons), переключатели дают возможность пользователю выбирать одну из нескольких опций. Когда вы используете множество элементов управления RadioButton в одном контейнере, выбранным может быть только один из них. Поэтому если у вас есть три опции, например, Red, Green и Blue, и если выбрана опция Red, а пользователь щелкает на Blue, то Red автоматически отключается.

Свойство Appearance принимает значение из перечисления Appearance. Оно может быть либо Button, либо Normal. Когда выбирается Normal, то переключатель выглядит как маленький кружок с меткой рядом с ним. Выбор его заполняет кружок, выбор другого переключателя из той же группы отменяет выбор текущего выбранного переключателя и делает его кружок пустым. При установке значения Appearance равным Button переключатель выглядит подобно стандартной кнопке, но работает подобно переключателю - выбранная кнопка нажата, не выбранная - отпущена.

Свойство CheckedAlign определяет, где находится кружок по отношению к тексту метки. Он может быть над текстом, под ним, справа или слева.

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



ComboBox, ListBox и CheckedListBox

ComboBox, ListBox и CheckedListBox - все унаследованы от класса ListControl. Этот класс определяет некоторую базовую функциональность управления списками. Самое главное в использовании списочных элементов управления - это добавление и выбор элементов списка. То, какой список нужно применять, в основном определяется тем, как его предполагается использовать, и типом данных, которые в нем должны содержаться. Если необходимо иметь возможность множественного выбора, или пользователю нужно видеть в любой момент несколько позиций списка, то лучше всего подойдут ListBox или CheckListBox. Если же в списке может быть выбран только один элемент за раз, то больше подойдет ComboBox.

Прежде чем списком можно будет пользоваться, к нему нужно добавить данные. Это делается добавлением объектов в ListBox.ObjectCollection. Эта коллекция представлена свойством списка Items. Поскольку коллекция сохраняет объекты, любой корректный тип .NET может быть добавлен в список. Для того чтобы идентифицировать элементы, необходимо установить два важных свойства. Первое из них - DisplayMember. Эта установка сообщает ListControl, какое свойство вашего объекта должно быть отображено в списке. Второе - ValueMember, оно указывает свойство вашего объекта, которое нужно возвратить в качестве его значения. Если в список добавляются строки, то по умолчанию они и используются для обоих этих свойств. Форма frmLists в примере приложения показывает, как и объекты, и строки (которые, разумеется, тоже представляют собой объекты) могут быть загружены в окно списка. В примере в качестве данных списка применяются объекты Vendor. Объект Vendor включает в себя только два свойства: Name и PhoneNo. Свойство DisplayMember установлено в свойство Name. Это заставляет списочный элемент управления отображать значения свойств Name содержащихся в нем объектов.

Существуют два способа доступа к данным в списочном элементе управления, как показано в следующем примере кода. Список загружается объектами Vendor. Устанавливаются свойства DisplayMember и ValueMember. Этот код можно найти в классе формы frmList приложения-примера.

В начале идет метод LoadList. Этот метод загружает список объектами Vendor или простыми строками, содержащими имя поставщика. Кнопка-переключатель используется для выбора того, что именно должно загружаться в список.

private void LoadList(Control ctrlToLoad)

ListBox tmpCtrl = null; if (ctrlToLoad is ListBox)

tmpCtrl = (ListBox)ctrlToLoad; tmpCtrl.Items.Clear();

tmpCtrl.DataSource = null;

if (radioButton1.Checked)

загрузить объекты

tmpCtrl.Items.Add(new Vendor( XYZ Company , 555-555-1234 )); tmpCtrl.Items.Add(new Vendor( ABC Company , 555-555-2345 )); tmpCtrl.Items.Add(new Vendor( Other Company , 555-555-3456 )); tmpCtrl.Items.Add(new Vendor( Another Company , 555-555-4567 )); tmpCtrl.Items.Add(new Vendor( More Company , 555-555-678 9 )); tmpCtrl.Items.Add(new Vendor( Last Company , 555-555-7 890 )); tmpCtrl.DisplayMember = Name ;

else

tmpCtrl.Items.Clear();



tmpCtrl.Items.Add( XYZ Company ); tmpCtrl.Items.Add( ABC Company ); tmpCtrl.Items.Add( Other Company ); tmpCtrl.Items.Add( Another Company ); tmpCtrl.Items.Add( More Company ); tmpCtrl.Items.Add( Last Company );

После того, как данные загружены в список, для их получения можно использовать свойства SelectedItem и SelectedIndex. Свойство SelectedItem возвращает текущий выбранный объект. Если список разрешает множественный выбор, нет гарантии того, какой именно элемент будет возвращен. В этом случае должна использоваться коллекция SelectObject. Она содержит список всех текущих выбранных элементов списка.

Если нужно получить элемент по определенному индексу, то свойство Items может быть использовано для доступа к ListBox.ObjectCollection. Поскольку это стандартный класс коллекции .NET, элементы коллекции могут быть получены так же, как элементы любого класса коллекции.

Если для наполнения списка используется DataBinding (привязка данных), то свойство SelectedValue вернет то свойство выбранного объекта, которое было указано через свойство ValueMember. Если ValueMember установлено в Phone, то SelectedValue вернет значение Phone выбранного в данный момент элемента списка. Для того чтобы можно было использовать ValueMember и SelectedValue, список должен быть загружен способом DataSource. ArrayList или любая другая основанная на IList коллекция должна быть сначала заполнена объектами, потом готовый список может быть присвоен свойству DataSource. Следующий короткий пример демонстрирует сказанное.

listBox1.DataSource = null;

System.Collections.ArrayList lst = new System.Collections.ArrayList(); lst.Add(new Vendor( XYZ Company , 555-555-1234 )); lst.Add(new Vendor( ABC Company , 555-555-2345 )); lst.Add(new Vendor( Other Company , 555-555-3456 )); lst.Add(new Vendor( Another Company , 555-555-4567 )); lst.Add(new Vendor( More Company , 555-555-6789 )); lst.Add(new Vendor( Last Company , 555-555-7890 )); listBox1.Items.Clear();

listBox1.DataSource = lst; listBox1.DisplayMember = Name ; listBox1.ValueMember = Phone ;

Использование SelectedValue без DataBinding приведет к исключению

NullException.

В следующем фрагменте кода показан синтаксис доступа к данным списка.

obj установлен в ссхлку на выбраннхй объект Vendor obj = listBox1.SelectedItem;

obj установлен в ссхлку на объект Vendor по индексу 3 (4-й по счету объект) obj = listBox.Items[3];

obj установлен в значение свойства Phone выбранного объекта поставщика в этом примере предполагается, что для наполнения списка использовалась привязка данных listBox1.ValuesMember = Phone ;

obj = listBox1.SelectValue;



1 2 3 4 [ 5 ] 6 7 8 ... 16

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика