这也是在使用Listbox的时候遇到的问题,ItemHeight的默认值是13,当在属性窗口里更改它时,改了又变回去了。后来上网查了下资料,原来Listbox默认是不能更改ItemHeight的。想要更改的话,需要这样做:
首先设置DrawMode属性为OwnerDrawVariable,自己画Listbox。
然后处理DrawItem和MeasureItem两个事件,DrawItem是在显示项时触发,MeasureItem是在要计算项的宽高时触发。在DrawItem里重新绘制项目,如下:
程序代码
e.DrawBackground ();
e.DrawFocusRectangle ();
e.Graphics.DrawString (listBox1.Items[e.Index].ToString(), e.Font, new SolidBrush (e.ForeColor), e.Bounds);
可以在MeasureItem里设置ItemHeight
程序代码
e.ItemHeight = 20;
如果只是这样简单的设个值的话可以不用MeasureItem事件了,因为这里已经可以在属性窗口里更改ItemHeight的值了。
分享到:
相关推荐
本文将深入探讨如何在C#中实现ListBox控件的重绘,以及源代码背后的原理和步骤。 首先,理解重绘的基本概念。在Windows Forms中,控件的外观是由其OnPaint方法处理的,这是系统绘制控件的地方。重绘ListBox意味着...
if (listBox1.Items.Count > listBox1.Height / listBox1.ItemHeight) listBox1.ScrollBars = ScrollBars.Vertical; else listBox1.ScrollBars = ScrollBars.None; ``` 5. 自定义滚动条行为: 除了设置滚动条...
pMeasureItemStruct->itemHeight = nHeight; pMeasureItemStruct->itemWidth = ...; // 可以根据需要设置项的宽度 dc.SelectObject(pOldFont); } ``` 接下来,我们关注自动换行功能的实现。标准的Listbox控件...
在本文中,我们将深入探讨如何利用ListBox控件来实现数据源字段的选择,特别是针对C#编程语言。 首先,我们需要理解ListBox的基础概念。ListBox控件是一个多选列表,用户可以选择一个或多个列表中的项。在C#中,...
根据需求调整`ListBox`的样式,例如,设置`ItemHeight`以适应图像大小,或者设置`OwnerDraw`属性为`true`来自定义绘制行为。 ### 9. 兼容性与适应性 在不同的平台和设备上,可能需要处理不同尺寸的屏幕和分辨率。...
在C#编程中,多选列表框控件(ListBox)是一种常见的用户界面元素,它允许用户从一组选项中选择一个或多个项目。本教程将深入探讨如何在C#应用程序中有效地利用多选列表框控件,提高用户体验并实现更丰富的交互功能...
1. **创建自定义控件类**:在C#中,可以创建一个新的类,如`AutoWrapListBox`,并让它继承自`ListBox`。 ```csharp public class AutoWrapListBox : ListBox { // 在这里添加新的属性和方法 } ``` 2. **重写`...
this.listBox1.ItemHeight = 12; this.listBox1.Location = new System.Drawing.Point(12, 141); this.listBox1.Name = "listBox1"; this.listBox1.Size = new System.Drawing.Size(572, 88); this.listBox1....
这段代码的核心在于,我们遍历ListBox中的每个项,根据索引的奇偶性设置不同的字体颜色,然后使用`Graphics`对象绘制文本。这样,当ListBox重新绘制时,每一行都会按照我们的规则显示不同颜色的字体。 为了方便使用...
在C#中,我们可以使用`BindingSource`组件作为中介,将ListBox的DataSource属性设置为`BindingSource`,并将`BindingSource`的数据源设置为我们想要显示的数据集。 3. **数据加载**:加载数据到ListBox,可以是硬...
this.tiplist.ItemHeight = 12; this.tiplist.Location = new System.Drawing.Point(8, 43); this.tiplist.Name = "tiplist"; this.tiplist.Size = new System.Drawing.Size(184, 110); this.tiplist...
this.lbClients = new System.Windows.Forms.ListBox(); this.button1 = new System.Windows.Forms.Button(); this.label1 = new System.Windows.Forms.Label(); // 设置组件属性 this.lbClients.ItemHeight =...
Rectangle结构用于表示矩形区域,可以通过ListBox.ItemHeight和ListBox.ItemWidth来获取项的高度和宽度,进一步计算出图片和文本的坐标。 5. **DrawBackground()和DrawFocusRect()方法**:在自定义绘制时,为了保持...
List控件通常可以是ListView、ListBox或DataGrid等形式,它们都用于展示一系列项目,每个项目包含一项或多项信息。在Windows Forms中,我们通常使用ListView控件来创建类似表格的视图,而ASP.NET中则常用GridView或...