为 ListView 控件增加动态编辑功能

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

默认的 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 ;
    int spos = 0 ;
    int e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值