列表框的圖示
阿新 • • 發佈:2020-08-05
介紹 我們都喜歡能控制更多的顏色或影象,我也一樣。 在本文中,我為自定義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