1. 程式人生 > 實用技巧 >列表框的圖示

列表框的圖示

介紹 我們都喜歡能控制更多的顏色或影象,我也一樣。 在本文中,我為自定義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