Примеры использования ComboBox. Пример 1

   
На этом шаге мы рассмотрим пример использования этого компонента.

   
Начиная с этого шага, мы приведем несколько примеров использования указанного компонента.

   
Допустим, нам нужно осуществлять выбор из нескольких строк, помещенных в компонент ComboBox. Модифицируем программу из
158 шага, заменив в ней компонент ListBox на ComboBox.

   
Текст приложения:

.   .   .   .   .
#include <stdio.h>
namespace My163_1 {
.   .   .   .   .
	private:
		/// <summary>
		// функция: загружает из файла текстовые строки в ListBox 
		void LoadFromFile(char *File, ComboBox ^cb)
		{
			char s[300];
			FILE *fp;
			cb->Items->Clear();
			if (!(fp=fopen(File, "r")))
			{
				MessageBox::Show("Ошибка открытия файла", 
                                   "Работа с ListBox", 
				MessageBoxButtons::OK, 
				MessageBoxIcon::Asterisk); 
				return;
			}
			fgets(s, 300, fp); 
			while(!feof(fp)) {
				String ^dd = gcnew String(s); 
				// этот способ конвертирования не удаляет последний 
				// управляющий символ, который надо удалить:
				int j = dd->Length-1; 
				dd = dd->Substring(0, j); 
				cb->Items->Add(dd);
				fgets(s,300,fp); 
			}
		}
		/// Требуется переменная конструктора.
		/// </summary>
.   .   .   .   .
// Обработчики событий
// Выход из приложения
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
	 Close();
 }
// Загрузка из файла
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
	 this->LoadFromFile("d:\\file.txt", this->comboBox1);
 }
// Закрытие списка
private: System::Void comboBox1_DropDownClosed(System::Object^  sender, 
       System::EventArgs^  e) {
	 if (comboBox1->SelectedIndex != -1)
    	     textBox1->Text = 
                 this->comboBox1->Items[this->comboBox1->SelectedIndex]->ToString();
 }

Архив проекта можно взять здесь.

   
Результат работы приложения:


Рис.1. Результат работы приложения

   
Обработка выбора осуществляется в обраотчике события DropDownClosed() компонента comboBox1. Возможно два случая, когда список сворачивается:

  • когда пользователь щелкает на какой-то строке компонента comboBox1. В этом случае свойство SelectedIndex содержит номер выбранной строки (нумерация строк начинается с 0). Это
    означает, что выбор был сделан, и, соответственно, выбранную строку нужно скопировать в компонент textBox1;
  • сворачивание списка может происходить и тогда, когда пользователь еще раз щелкнул по кнопке со стрелкой вниз, которая используется для раскрытия списка. В этом случае значение свойства
    SelectedIndex будет равно -1, что является признаком отсутствия выбора. В этом случае значение компонента textBox1 не изменяется.

   
На следующем шаге мы рассмотрим еще один пример использования этого компонента.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий