繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> 为ComboBox控件添加图片

为ComboBox控件添加图片

2007-10-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:.NET自带的ComboBox控件没有添加图片的功能,我们可以自己进行扩展,下面就是扩展类的代码: 结果如下: ComboBoxEx.cs using System; using System.Windows.Forms; using System.Windows.Forms.Design; using S...
关键字:控件 ComboBox 图片

.NET自带的ComboBox控件没有添加图片的功能,我们可以自己进行扩展,下面就是扩展类的代码:

结果如下:

ComboBoxEx.cs

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 description for Form1.

///

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

//

}

///

/// Clean up any resources being used.

///

protected override void Dispose( bool disposing )

{

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

#region Windows Form Designer generated code

///

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

///

private void InitializeComponent()

{

ComboBoxEx comboBox1 = new ComboBoxEx();

ImageList imageList1 = new ImageList();

imageList1.Images.Add(Image.FromFile(@"D:\favicon.ico"));

imageList1.Images.Add(Image.FromFile(@"D:\favicon4.ico"));

imageList1.Images.Add(Image.FromFile(@"D:\favicon5.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

///

/// The main entry point for the application.

///

[STAThread]

static void Main()

{

Application.Run(new Form1());

}

}

}

做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。

责任编辑:admin
相关文章