列表框的图标

Posted dincat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表框的图标相关的知识,希望对你有一定的参考价值。

介绍 我们都喜欢能控制更多的颜色或图像,我也一样。 在本文中,我为自定义ListBox类中的每个项提供了一个image属性。 注意:我的文章没有源代码,因为它非常简短和容易。 首先:我们为GListBox创建了两个类 隐藏,收缩,复制Code

// GListBoxItem

  

 

class 
public class GListBoxItem
{
    private string _myText;
    private int _myImageIndex;
    // properties 
    public string Text
    {
        get {return _myText;}
        set {_myText = value;}
    }
    public int ImageIndex
    {
        get {return _myImageIndex;}
        set {_myImageIndex = value;}
    }
    //constructor
    public GListBoxItem(string text, int index)
    {
        _myText = text;
        _myImageIndex = index;
    }
    public GListBoxItem(string text): this(text,-1){}
    public GListBoxItem(): this(""){}
    public override string ToString()
    {
        return _myText;
    }
}//End of GListBoxItem class

// GListBox class 
public class GListBox : ListBox
{
    private ImageList _myImageList;
    public ImageList ImageList
    {
        get {return _myImageList;}
        set {_myImageList = value;}
    }
    public GListBox()
    {
        // Set owner draw mode
        this.DrawMode = DrawMode.OwnerDrawFixed;
    }
    protected override void OnDrawItem(System.Windows.Forms.DrawItemEventArgs e)
    {
        e.DrawBackground();
        e.DrawFocusRectangle();
        GListBoxItem item;
        Rectangle bounds = e.Bounds;
        Size imageSize = _myImageList.ImageSize;
        try
        {
            item = (GListBoxItem) Items[e.Index];
            if (item.ImageIndex != -1)
            {
                imageList.Draw(e.Graphics, bounds.Left,bounds.Top,item.ImageIndex); 
                e.Graphics.DrawString(item.Text, e.Font, new SolidBrush(e.ForeColor), 
                    bounds.Left+imageSize.Width, bounds.Top);
            }
            else
            {
                e.Graphics.DrawString(item.Text, e.Font,new SolidBrush(e.ForeColor),
                    bounds.Left, bounds.Top);
            }
        }
        catch
        {
            if (e.Index != -1)
            {
                e.Graphics.DrawString(Items[e.Index].ToString(),e.Font, 
                    new SolidBrush(e.ForeColor) ,bounds.Left, bounds.Top);
            }
            else
            {
                e.Graphics.DrawString(Text,e.Font,new SolidBrush(e.ForeColor),
                    bounds.Left, bounds.Top);
            }
        }
        base.OnDrawItem(e);
    }
}//End of GListBox class

在那之后,为了使用我们的代码,我们可以做: 隐藏,复制Code

GListBox lb = new GListBox();
lb.ImageList = imageList;
lb.Items.Add( new GListBoxItem("Image 1",0));
lb.Items.Add( new GListBoxItem("Image 2",1));
lb.Items.Add( new GListBoxItem("Image 3",2));

以上就是全部内容,谢谢大家的阅读。 本文转载于:http://www.diyabc.com/frontweb/news336.html

以上是关于列表框的图标的主要内容,如果未能解决你的问题,请参考以下文章

IE8 input X 去掉文本框的叉叉和密码输入框的眼睛图标

如何在没有图像的联系人上显示自定义图标?

PHP:多行文本框的便捷小片段

html 这个要点包含使用RightCare品牌创建浮动框的片段。

HTML代码片段

HTML代码片段