
C# WinForm ListView 控件美化扩展系列
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本系列专注于C# WinForm中ListView控件的美化与功能扩展,旨在提升界面美观度和用户体验。通过深入探讨并实践多种优化方法,为开发者提供详尽的操作指南和技术支持。
在之前的一篇文章《C# WinForm控件美化扩展系列之ListView(2)》中,发现列表项文本出现错乱的问题。这个问题的原因是在绘制文本的时候不小心选择了错误的属性,将SubItem误选为Item,导致总是获取到第一项的文本内容。除了修正这个错误之外,还对列表项被选中的时候背景画法进行了调整:不再让每个子项都有一个矩形边框,而是整个列表项只有一个统一的矩形边框。此外,实现了ListView边框重绘的功能,可以轻松更改边框的颜色。
以下是相关代码:
```csharp
private void WmNcPaint(ref Message m)
{
base.WndProc(ref m);
if (base.BorderStyle == BorderStyle.None)
return;
IntPtr hDC = NativeMethods.GetWindowDC(m.HWnd);
if (hDC == IntPtr.Zero)
throw new Win32Exception();
try
{
Color backColor = BackColor;
Color borderColor = _borderColor;
Rectangle bounds = new Rectangle(0, 0, Width, Height);
using(Graphics g = Graphics.FromHdc(hDC))
{
using (Region region = new Region(bounds))
{
region.Exclude(AbsoluteClientRectangle);
using(Brush brush = new SolidBrush(backColor))
g.FillRegion(brush, region);
ControlPaint.DrawBorder(g, bounds, borderColor, ButtonBorderStyle.Solid);
}
}
}
finally
{
NativeMethods.ReleaseDC(m.HWnd, hDC);
}
m.Result = IntPtr.Zero;
}
```
全部评论 (0)


