Cwinform中有哪些第三方控件,C# Winform编程ListBox之DrawItem事件_HOHO网页设计的技术博客

 新建一个winform项目,拖一个ListBox控件listBox1

 

 

public Form1()  {      InitializeComponent();                  listBox1.DrawMode = DrawMode.OwnerDrawFixed;  } 

首先需要设置DrawMode为DrawMode.OwnerDrawFixed 或 DrawMode.OwnerDrawVariable 时,才触发该事件(DrawItem事件).,也可以通过设计器在属性面板里设置哈。

 

private void listBox1_DrawItem(object sender, DrawItemEventArgs e) {     e.DrawBackground();//绘制背景     Brush myBrush = Brushes.Black;      switch (e.Index)     {         case 0:             myBrush = Brushes.Red;             break;         case 1:             myBrush = Brushes.Orange;             break;         case 2:             myBrush = Brushes.Purple;             break;     }     e.DrawFocusRectangle();//焦点框      //文本     e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, myBrush, e.Bounds, StringFormat.GenericDefault); } 

这是采用附加委托的方式处理,可以查看设计器产生的代码:

 

this.listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem); 

事件由ListBox触发.

下面,再举一反三下,实现交替颜色的列表框:

 

public partial class Form1 : Form {     private Color RowBackColorAlt=Color.FromArgb(200,200,200);//交替色     private Color RowBackColorSel = Color.FromArgb(150, 200, 250);//选择项目颜色      public Form1()     {         InitializeComponent();                     listBox1.DrawMode = DrawMode.OwnerDrawFixed;     }      private void listBox1_DrawItem(object sender, DrawItemEventArgs e)     {         Brush myBrush = Brushes.Black;          if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)         {             myBrush = new SolidBrush(RowBackColorSel);         }         else if (e.Index % 2 == 0)         {             myBrush = new SolidBrush(RowBackColorAlt);         }         else         {             myBrush = new SolidBrush(Color.White);         }         e.Graphics.FillRectangle(myBrush, e.Bounds);         e.DrawFocusRectangle();//焦点框          //文本         e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, Brushes.Black, e.Bounds, StringFormat.GenericDefault);     }  } 

上图:

 

 

C# Winform编程ListBox之DrawItem事件_ListBox

 接下来,设置ItemHeight,每一项的高度:

 

public Form1() {     InitializeComponent();                 listBox1.DrawMode = DrawMode.OwnerDrawFixed;     listBox1.ItemHeight = 24; } 

文字,剧中:

 

//文本 StringFormat strFormat = new StringFormat(); strFormat.Alignment = StringAlignment.Center; strFormat.LineAlignment = StringAlignment.Center; e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, Brushes.Black, e.Bounds,strFormat); 

上图片:

 

C# Winform编程ListBox之DrawItem事件_winform_02

 下面看看MeasureItem 事件:

仅当 DrawMode 属性被设置为 OwnerDrawVariable 时,才引发该事件。

public partial class Form1 : Form {     private Color RowBackColorAlt=Color.FromArgb(200,200,200);//交替色     private Color RowBackColorSel = Color.FromArgb(150, 200, 250);//选择项目颜色      public Form1()     {         InitializeComponent();                     listBox1.DrawMode = DrawMode.OwnerDrawVariable;     }      private void listBox1_DrawItem(object sender, DrawItemEventArgs e)     {         Brush myBrush = Brushes.Black;          if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)         {             myBrush = new SolidBrush(RowBackColorSel);         }         else if (e.Index % 2 == 0)         {             myBrush = new SolidBrush(RowBackColorAlt);         }         else         {             myBrush = new SolidBrush(Color.White);         }         e.Graphics.FillRectangle(myBrush, e.Bounds);         e.DrawFocusRectangle();//焦点框          //文本         StringFormat strFormat = new StringFormat();         strFormat.Alignment = StringAlignment.Center;         strFormat.LineAlignment = StringAlignment.Center;         e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds,strFormat);     }      private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e)     {         e.ItemHeight = (1+e.Index)*12;     }  } 

 

无钢圈文胸适合什么人穿文胸和胸罩的区别第四十七章没有人比我更懂太康向生第四十七章不过如此田家兔全文阅读校花的贴身高手手游游戏冬季到台北来看雨吉他谱指弹版郑州暴雨河南防汛应急响应级别提升为级与鸭共舞下载最新章节目录虎牙小说网美国国会与外国议会的正式交流机制美国国会参议院和众议院的区别龙之刃手游下载天空如墨也如焰火天空风景图2020教师资格证成绩怎样发朋友圈魔幻车神为什么不能看了魔幻车神免费观看樱花口袋冒险家超梦激活码口袋冒险家下载安装拉丁美洲的世界遗产秘鲁共和国首都