- 設置 DropDownStyle 為 DropDownList
- 將 DrawMode 改為 OwnerDrawFixed
- 添加 DrawItem 事件
- 樣式就變為下面這樣,但是只能在列表中選擇,而不能手動輸入
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)