WinForm — сводка ComboBox

искусственный интеллект
  1. Общие свойства
  • Свойство DropDownStyle

Свойство DropDownStyle ComboBox имеет три значения: DropDownList, DropDown, Simple.

поле инструкция
DropDown Укажите список отображения, щелкнув стрелку вниз, и укажите, что текстовый раздел доступен для редактирования. Это означает, что пользователь может вводить новые значения вместо того, чтобы быть ограниченным выбором существующих значений в списке. При использовании этого параметра значение AutoCompleteMode Append имеет тот же эффект, что и значение SuggestAppend. Это стиль по умолчанию.
DropDownList Укажите список отображения, щелкнув стрелку вниз, и укажите, что текстовая часть недоступна для редактирования. Это означает, что пользователь не может вводить новые значения. Можно выбрать только те значения, которые уже есть в списке. Список будет отображаться только в том случае, если AutoCompleteMode имеет значение Suggest или SuggestAppend.
Simple Указывает, что список всегда виден, а текстовая часть доступна для редактирования. Это означает, что пользователь может вводить новые значения вместо того, чтобы быть ограниченным выбором существующих значений в списке.
  • Свойство SelectedIndex

Представляет получение или установку индекса указанного в данный момент выбранного элемента или -1, если элемент не выбран.

  1. Общий метод
  • Выберите метод

Этот метод выбирает указанный элемент из ComboBox. Синтаксис public void Select(int start,int length);

start: указывает положение первого символа выделенного в данный момент текста в текстовом поле. .

длина: указывает количество выбираемых символов.

  • Метод SelectAll

Этот метод используется для выделения всего текста в редактируемой части элемента управления ComboBox.

  1. Общие события
  • Событие раскрывающегося списка

Происходит при отображении раскрывающейся части ComboBox.

  • Событие DropDownClosed

Происходит, когда раскрывающаяся часть ComboBox не видна.

  • Событие SelectedIndexChanged

Происходит после изменения свойства SelectedIndex.

  • Событие SelectedValueChanged

Происходит при изменении свойства SelectedValue.

  1. Практический пример
  • Проверка событий SelectedIndexChanged, DropDown, DropDownClosed

 

 

public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

 

        private void Form1_Load(object sender, EventArgs e)

        {

            this.richTextBox1.ReadOnly = true;

string[] arr = { "гольф", "настольный теннис", "бадминтон", "волейбол" };

            for (int i = 0; i < arr.Length; i++)

            {

                this.comboBox1.Items.Add(arr[i]);

            }

            this.comboBox1.SelectedIndex = 0;

        }

        private void comboBox1_DropDown(object sender, EventArgs e)

        {

            this.richTextBox1.BackColor = Color.BurlyWood;

            this.richTextBox1.ForeColor = Color.BlueViolet;

this.richTextBox1.Text = "Открыть";

            this.richTextBox1.SelectionAlignment = HorizontalAlignment.Center;

        }

        private void comboBox1_DropDownClosed(object sender, EventArgs e)

        {

            this.richTextBox1.BackColor = Color.BurlyWood;

            this.richTextBox1.ForeColor = Color.BlueViolet;

this.richTextBox1.Text = "Закрыть";

            this.richTextBox1.SelectionAlignment = HorizontalAlignment.Center;

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

        {

MessageBox.Show("Индекс вариантов: " + this.comboBox1.SelectedItem.ToString());

        }

}

  • Привязать данные набора данных

//Привязываем источник данных DataSet

private void BindcmbArea()

{

if (bllArea==null)//Создаем экземпляр объекта

{

    bllArea=BLL.MetaData.HotelArea.Instance();

}

DataSet ds=bllArea.GetDataSet();//Получить источник данных с помощью DataSet

cmb.DataSource=ds.Table[0].defaultView;//Указываем источник данных

cmb.DisplayMember="AreaName";//Привяжите значение Text, используйте cmb.Text, чтобы получить значение

CMB.Valuemember = "areaID";// значение привязки значения

}

  • После привязки источника данных пункт «Все» добавляется по умолчанию.

if (bllArea==null)//Создаем экземпляр объекта

{

    bllArea=BLL.MetaData.HotelArea.Instance();

}

DataSet ds=bllArea.GetDataSet();//Получить источник данных с помощью DataSet

DataTable table=new DataTable();

DataColumn dc = new DataCoumn ("AreaID", typeof (int));

table.Columns.Add(dc);

dc = новый столбец данных («Имя области», тип (строка));

table.Columns.Add(dc);

DataRow row=table.NewRow();

row[0]=0;

строка [1] = "все";

for(int i=0;i<ds.Tables[0].Rows.Count;i++)

{

    row=table.NewRow();

row[0]=ds.Tables[0].Rows[i]["AreaID"];

row[1]= ds.Tables[0].Rows[i]["ИмяОбласти"];

    table.Rows.Add(row);

}

cmb.DataSource=table;//Указываем источник данных

cmb.DisplayMember="AreaName";//Привяжите значение Text, используйте cmb.Text, чтобы получить значение

cmb.ValueMember="AreaID";//Привязать значение значения

Примечание. Когда два поля со списком указывают один и тот же объект, при изменении значения одного поля со списком другое поле со списком также меняет решение.

cmb2.DataSurce=table.Copy();

cmb2.DisplayMember="AreaName";//Привяжите значение Text, используйте cmb.Text, чтобы получить значение

cmb2.ValueMember="AreaID";//Привязать значение значения

cmb2.SelectedIndex=0;

  • Привяжите источник данных List, чтобы добавить элемент «Выберите».

private void BindType()

{

         List<TicketTypeInfo> typeList=_TypeBLL.GetList();

         if (typeList>0)

{

TypeList.Insert(0,new TicketTypeInfo(){TypeID=0,TypeCode=”0”, TypeName=”Пожалуйста, выберите”});

         cmb.DataSource=typeList;

cmb.DisplayMember = «Имя Типа»;

cmb.ValueMember = «Код Типа»;

}

}

  • Украсьте ComboBox и добавьте изображение перед каждым элементом ComboBox.

Считайте изображения из базы данных в imageList1, чтобы сохранить изображения.

Установите свойства ComboBox. Установите DrawMode в OwnerDrawFixed и DropDownStyle в DropDownList.

// привязать данные

private void cmbBind()

{

         List<DicValueInfo> dicValueList=_dicValueBLL.GetList();

         foreach(DicValueInfo dic in dicValueList)

         {

ImageList1.Images.Add(dic.DicItemID.ToString(),AddHeader(dicValueInfo.Icon16));// Метод AddHeader преобразует массив байтов в изображение.

                   cmb.Items.Add(dic.ShowName.ToString());

}

if (cmb.Items.Cout>0)

{

         cmb.SelectedIndex=0;

}

}

//Привязываем событие DrawItem

private void cmbDrawItem(object sender,DrawItemEventArgs e)

{

Graphics gCom=e.Graphics;//Объявить объект класса поверхности рисования GDT+.

Rectangle rCom=e.Bounds;//Объявить объект, представляющий позицию удержания и класс размера.

Size imageSize=imageList1.ImageSize;//Объявляем объект упорядоченных пар сертификатов.

FontDialog typeface=new FontDialog();//Определяем объект класса шрифта.

Font style=typeface.Font;//Определяем конкретный объект класса текстового формата

if (e.Index>=0)//Когда нарисованный элемент индекса существует.

{

String temp=(string)cmb.Items[e.Index].ToString();//Получить текстовое содержимое элемента индекса элемента управления ComboBox.

StringFormat stringFormat=new StringFormat();//Определяем объект, который инкапсулирует класс информации о макете текста.

stringFormat.Alignment=StringAlignment.Near;//Устанавливаем макет текста.

If(e.state==(DrawItemState.NoAccelerator|DrawItemState.NoFocusRect))//Когда элемент рисования не имеет клавиш быстрого доступа и визуальных подсказок фокуса

         {

e.Graphics.FillRectangle(new SolidBrush(Color.Red),rCom);//Залейте внутреннюю часть пользовательского прямоугольника указанным цветом.

ImageList1.Draw(e.Graphics,rCom.Left,rCom.Top,e.Index);//Рисуем картинку с указанным индексом в указанной позиции

e.Graphics.DrawString(temp,new SolidBrush(Color.Black),rCom.Left+imageSize.Width,rCom.Top);//В указанной позиции указанный объект Font рисует указанную текстовую строку.

e.DrawFocusRectangle();//Рисуем собирающую рамку в пределах указанной границы

}

else//Когда элемент рисования имеет клавишу быстрого доступа или фокус может быть изменен

{

e.Graphics.FillRectangle(new SolidBrush(Color.LightBule),rCom);//Залейте печальную внутреннюю часть пользовательского прямоугольника указанным цветом.

imageList1.Draw(e.Graphics,rCom.Left,rCom.Top,e.Index);//Картинка указанной позиции index

e.Graphics.DrawString(temp,style,new SolidBrush(Color.Black),rCom.Left+imageSize.Width,rCom.Top);//Нарисуйте указанную текстовую строку в указанной позиции и с указанным объектом Font.

e.DrawFocusRectangle();//Рисуем рамку фокуса в указанных границах.

}

}

}