- Общие свойства
- Свойство DropDownStyle
Свойство DropDownStyle ComboBox имеет три значения: DropDownList, DropDown, Simple.
поле | инструкция |
---|---|
DropDown | Укажите список отображения, щелкнув стрелку вниз, и укажите, что текстовый раздел доступен для редактирования. Это означает, что пользователь может вводить новые значения вместо того, чтобы быть ограниченным выбором существующих значений в списке. При использовании этого параметра значение AutoCompleteMode Append имеет тот же эффект, что и значение SuggestAppend. Это стиль по умолчанию. |
DropDownList | Укажите список отображения, щелкнув стрелку вниз, и укажите, что текстовая часть недоступна для редактирования. Это означает, что пользователь не может вводить новые значения. Можно выбрать только те значения, которые уже есть в списке. Список будет отображаться только в том случае, если AutoCompleteMode имеет значение Suggest или SuggestAppend. |
Simple | Указывает, что список всегда виден, а текстовая часть доступна для редактирования. Это означает, что пользователь может вводить новые значения вместо того, чтобы быть ограниченным выбором существующих значений в списке. |
- Свойство SelectedIndex
Представляет получение или установку индекса указанного в данный момент выбранного элемента или -1, если элемент не выбран.
- Общий метод
- Выберите метод
Этот метод выбирает указанный элемент из ComboBox. Синтаксис public void Select(int start,int length);
start: указывает положение первого символа выделенного в данный момент текста в текстовом поле. .
длина: указывает количество выбираемых символов.
- Метод SelectAll
Этот метод используется для выделения всего текста в редактируемой части элемента управления ComboBox.
- Общие события
- Событие раскрывающегося списка
Происходит при отображении раскрывающейся части ComboBox.
- Событие DropDownClosed
Происходит, когда раскрывающаяся часть ComboBox не видна.
- Событие SelectedIndexChanged
Происходит после изменения свойства SelectedIndex.
- Событие SelectedValueChanged
Происходит при изменении свойства SelectedValue.
- Практический пример
- Проверка событий 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();//Рисуем рамку фокуса в указанных границах.
}
}
}