C#自定義控件之下拉列表框


  1. 設置 DropDownStyle 為 DropDownList


     
  2. 將 DrawMode 改為 OwnerDrawFixed


     
  3. 添加 DrawItem 事件
  4.  樣式就變為下面這樣,但是只能在列表中選擇,而不能手動輸入

    public class ComBox : ComboBox
    {
        public ComBox()
        {
            this.DropDownStyle = ComboBoxStyle.DropDownList;
            this.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
            this.DrawItem += new DrawItemEventHandler(ComBox_DrawItem);
        }

        void ComBox_DrawItem(object sender, DrawItemEventArgs e)
        {
            ComboBox cb = sender as ComboBox;
            if (e.Index < 0)
            {
                return;
            }
            e.DrawBackground();
            e.DrawFocusRectangle();
            e.Graphics.DrawString(cb.GetItemText(cb.Items[e.Index]).ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds.X, e.Bounds.Y + 3);
        }

    }
    public class CmbInfo
    {
        public int ID { get; set; }

        public object ObjEnum { get; set; }

        public string Name { get; set; }
    }


List<CmbInfo> listCmbInfo = new List<CmbInfo>();
listCmbInfo.Add(new CmbInfo() { ID = 100, Name = "100" });
listCmbInfo.Add(new CmbInfo() { ID = 120, Name = "120" });
listCmbInfo.Add(new CmbInfo() { ID = 150, Name = "150" });
this.cmb1.DisplayMember = "Name";
this.cmb1.ValueMember = "ID";
this.cmb1.DataSource = listCmbInfo;

//這樣顯示的是 Name 屬性,取值時可以取 ID 屬性 (this.cmb1.SelectedValue)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM