WinForm——ComboBox總結
常用屬性
DropDownStyle屬性
ComboBox 的DropDownStyle 屬性 一共有三個值:DropDownList, DropDown, Simple。
字段
說明
DropDown
通過單擊下箭頭指定顯示列表,并指定文本部分可編輯。 這表示用戶可以輸入新的值,而不僅限于選擇列表中現有的值。 使用此設置時,Append 的 AutoCompleteMode 值的作用與 SuggestAppend 值相同。 這是默認樣式。
DropDownList
通過單擊下箭頭指定顯示列表,并指定文本部分不可編輯。 這表示用戶不能輸入新的值。 只能選擇列表中已有的值。 只有在 AutoCompleteMode 為 Suggest 或 SuggestAppend 時才會顯示列表。
Simple
指定列表始終可見,并指定文本部分可編輯。 這表示用戶可以輸入新的值,而不僅限于選擇列表中現有的值。
SelectedIndex屬性
表示獲取或設置指定當前選定項的索引,如果未選定任何項則返回值為-1
常用方法
Select方法
該方法從ComboBox選取指定的項。語法格式public void Select(int start,int length);
start:表示文本框中當前選定文本的第一位字符的位置。。
length:表示要選擇的字符數。
SelectAll方法
該方法用來選擇ComboBox控件可編輯部分的所有文本。
常用事件
DropDown事件
當顯示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數據
//綁定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”;//綁定Value值
}
綁定數據源后,默認添加“全部”項。
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=new DataColumn(“AreaName”,typeof(string));
table.Columns.Add(dc);
DataRow row=table.NewRow();
row[0]=0;
row[1]=”全部”;
for(int i=0;i { row=table.NewRow(); row[0]=ds.Tables[0].Rows[i][“AreaID”]; row[1]= ds.Tables[0].Rows[i][“AreaName”]; table.Rows.Add(row); } cmb.DataSource=table;//指定數據源 cmb.DisplayMember=”AreaName”;//綁定Text的值,獲取值用cmb.Text cmb.ValueMember=”AreaID”;//綁定Value值 注:當兩個ComboBox指定同一個對象的時候,一個ComboBox的值發生變化的時候,另一個ComboBox也改變的解決方法 cmb2.DataSurce=table.Copy(); cmb2.DisplayMember=”AreaName”;//綁定Text的值,獲取值用cmb.Text cmb2.ValueMember=”AreaID”;//綁定Value值 cmb2.SelectedIndex=0; 綁定List數據源增加“請選擇”項 private void BindType() { List if (typeList>0) { typeList.Insert(0,new TicketTypeInfo(){TypeID=0,TypeCode=”0”,TypeName=”請選擇”}); cmb.DataSource=typeList; cmb.DisplayMember=”TypeName”; cmb.ValueMember=”TypeCode”; } } 美化ComboBox,讓ComboBox每個Item前面加上一個圖片 將數據庫中圖片讀取到imageList1中,用來保存圖片。 設置ComboBox的屬性。將DrawMode設置為OwnerDrawFixed,DropDownStyle設置為DropDownList //綁定數據 private void cmbBind() { List foreach(DicValueInfo dic in dicValueList) { imageList1.Images.Add(dic.DicItemID.ToString(),AddHeader(dicValueInfo.Icon16));// AddHeader方法將byte數組轉為圖片。 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);//指定位置索引的圖片 e.Graphics.DrawString(temp,style,new SolidBrush(Color.Black),rCom.Left+imageSize.Width,rCom.Top);//在指定位置并且用指定的Font對象繪制指定的文本字符串。 e.DrawFocusRectangle();//在指定的邊界范圍內繪制聚焦框。 } } }
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。