默认的 ListView 控件没有动态编辑功能,通常的做法是生成一个 Edit 或 ComboBox 控件覆盖在指定的位置。
C# 封装的控件在实现这一功能却不那么直接了。
参考了 codeproject 和其他网页的代码,勉强写了一个,但始终有些问题。
判断覆盖的区域问题较多,实现的主要代码为
private void CLVMouseDown(object sender, MouseEventArgs e)
{
this.lvi = this.GetItemAt(e.X , e.Y);
this.pt = new Point(e.X, e.Y);
}
private void CLVDoubleClick(object sender, System.EventArgs e)
{
// Check the subitem clicked .
int nStart = this.pt.X ;

默认ListView控件不支持动态编辑,通过C#编程可以实现这一功能,但存在判断覆盖区域的问题。主要代码涉及鼠标点击事件处理,通过GetItemAt获取点击的子项,计算编辑框位置和大小。然而,使用LVM_GETSUBITEMRECT方法可能导致覆盖整个行,显示问题在于宽度基于列宽,第0列位置有特殊处理。
最低0.47元/天 解锁文章
2341

被折叠的 条评论
为什么被折叠?



