WinForm——ComboBox總結

      網友投稿 1270 2022-05-29

      常用屬性

      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()

      WinForm——ComboBox總結

      {

      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 typeList=_TypeBLL.GetList();

      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 dicValueList=_dicValueBLL.GetList();

      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小時內刪除侵權內容。

      上一篇:黑白棋人機對戰完整代碼
      下一篇:簡單指令介紹
      相關文章
      亚洲日本中文字幕一区二区三区| 久久精品熟女亚洲av麻豆| 亚洲国产成人久久一区久久| 亚洲第一街区偷拍街拍| 亚洲av永久无码精品三区在线4| 亚洲精品自拍视频| 亚洲精品美女在线观看| 亚洲欧洲中文日产| 亚洲一区二区三区精品视频| 亚洲国产成人久久综合一区| 亚洲区视频在线观看| 亚洲第一成年人网站| 亚洲日韩乱码中文无码蜜桃| 亚洲国产精品成人综合久久久 | 国产成+人+综合+亚洲专| 亚洲av专区无码观看精品天堂| 亚洲午夜久久久久久尤物| 亚洲sss综合天堂久久久| 亚洲精品天堂在线观看| 亚洲日韩精品无码专区加勒比☆ | 久久亚洲国产成人影院| 亚洲一区AV无码少妇电影| 亚洲JIZZJIZZ妇女| 人人狠狠综合久久亚洲高清 | 亚洲色大成网站www永久| 亚洲成人福利网站| 亚洲成a人片在线看| 亚洲精品无码中文久久字幕| 亚洲AV无码乱码在线观看性色扶| 亚洲美女在线国产| 亚洲人成网站在线播放vr| 亚洲av日韩av无码黑人| 亚洲精品视频久久| 亚洲色偷偷综合亚洲av78| 国产午夜亚洲精品不卡电影| 国产精品亚洲二区在线观看| 久久国产精品亚洲综合| 亚洲国产综合精品| 亚洲色最新高清av网站| 亚洲av无码天堂一区二区三区 | 中国亚洲呦女专区|