using
System;
using
System.Windows.Forms;
using
System.Windows.Forms.Design;
using
System.Drawing;
namespace
Mengxianhui.ComboBoxEx
...
{ class ComboBoxEx : ComboBox ...{ private ImageList imageList; public ImageList ImageList ...{ get ...{return imageList;} set ...{imageList = value;} } public ComboBoxEx() ...{ DrawMode = DrawMode.OwnerDrawFixed; } protected override void OnDrawItem(DrawItemEventArgs ea) ...{ ea.DrawBackground(); ea.DrawFocusRectangle(); ComboBoxExItem item; Size imageSize = imageList.ImageSize; Rectangle bounds = ea.Bounds; try ...{ item = (ComboBoxExItem)Items[ea.Index]; if (item.ImageIndex != -1) ...{ imageList.Draw(ea.Graphics, bounds.Left, bounds.Top, item.ImageIndex); ea.Graphics.DrawString(item.Text, ea.Font, new SolidBrush(ea.ForeColor), bounds.Left+imageSize.Width, bounds.Top); } else ...{ ea.Graphics.DrawString(item.Text, ea.Font, new SolidBrush(ea.ForeColor), bounds.Left, bounds.Top); } } catch ...{ if (ea.Index != -1) ...{ ea.Graphics.DrawString(Items[ea.Index].ToString(), ea.Font, new SolidBrush(ea.ForeColor), bounds.Left, bounds.Top); } else ...{ ea.Graphics.DrawString(Text, ea.Font, new SolidBrush(ea.ForeColor), bounds.Left, bounds.Top); } } base.OnDrawItem(ea); } } class ComboBoxExItem ...{ private string _text; public string Text ...{ get ...{return _text;} set ...{_text = value;} } private int _imageIndex; public int ImageIndex ...{ get ...{return _imageIndex;} set ...{_imageIndex = value;} } public ComboBoxExItem() : this("") ...{ } public ComboBoxExItem(string text) : this(text, -1) ...{ } public ComboBoxExItem(string text, int imageIndex) ...{ _text = text; _imageIndex = imageIndex; } public override string ToString() ...{ return _text; } }}
使用方法
using
System;
using
System.Drawing;
using
System.Collections;
using
System.ComponentModel;
using
System.Windows.Forms;
using
System.Data;
namespace
Mengxianhui.ComboBoxEx
...
{ /**//// <summary> /// Summary description for Form1. /// </summary> public class Form1 : System.Windows.Forms.Form ...{ private ComboBoxEx comboBox1; private System.ComponentModel.IContainer components; public Form1() ...{ // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /**//// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) ...{ if( disposing ) ...{ if (components != null) ...{ components.Dispose(); } } base.Dispose( disposing ); } Windows Form Designer generated code#region Windows Form Designer generated code /**//// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() ...{ ComboBoxEx comboBox1 = new ComboBoxEx(); ImageList imageList1 = new ImageList(); imageList1.Images.Add(Image.FromFile(@"D: avicon.ico")); imageList1.Images.Add(Image.FromFile(@"D: avicon4.ico")); imageList1.Images.Add(Image.FromFile(@"D: avicon5.ico")); comboBox1.ImageList = imageList1; comboBox1.Width = 200; comboBox1.Items.Add(new ComboBoxExItem("【孟宪会之精彩世界】", 0)); comboBox1.Items.Add(new ComboBoxExItem("【孟宪会之精彩世界】", 1)); comboBox1.Items.Add(new ComboBoxExItem("【孟宪会之精彩世界】", 2)); this.Controls.AddRange(new System.Windows.Forms.Control[] ...{comboBox1}); // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(292, 273); this.Controls.AddRange(new System.Windows.Forms.Control[] ...{comboBox1}); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion /**//// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() ...{ Application.Run(new Form1()); } }}
转载请注明原文地址: https://ibbs.8miu.com/read-23416.html