如何使列表视图在双击某个项目时不自动检查该项目?
我可以尝试挂钩 MouseDoubleClick 事件,并将 Checked 属性设置为 false,但这感觉有点像黑客。当实际检查某个项目时,我还会运行相当昂贵的计算,并且不希望此代码在双击时运行。通过上面的事件挂钩,在处理双击之前引发 ItemCheck 和 ItemChecked 事件。
有一个优雅的解决方案吗?
当您必须破解本机 Windows 控件的工作方式时,通常不会想到“优雅”这个词,但这正是这里所需要的。请考虑您是否确实希望控件的行为与任何其他程序中的列表视图不同。
将新类添加到您的项目中并粘贴下面所示的代码。编译。将新控件从工具箱顶部拖放到窗体上。
using System;
using System.Windows.Forms;
class MyListView : ListView {
protected override void WndProc(ref Message m) {
// Filter WM_LBUTTONDBLCLK
if (m.Msg != 0x203) base.WndProc(ref m);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)