频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

ListView中屏蔽双击时改变CheckBox状态

来源:巧巧读书网 作者:douces 出处:巧巧读书 2008-01-16 进入讨论组

在vb.net中,使用ListView 控件时,如果CheckBoxes设置为True,我们双击一个列表项的时候,该项前面的复选框状态就会发生更改,它的这个功能,很多时候会给我们程序的用户带来不便。那么如何阻止双击某项时,复选框状态发生更改呢?

解决办法是:重写控件的 WndProc 方法,捕获双击消息,然后处理它。

解决方案如下:

因为需要重写控件的方法,所以我们干脆重载ListView 控件,制作一个用户控件。

1、首先,建立一个空白的vb.net项目,然后选择菜单上的“项目”——“添加用户控件”,如下图一所示:

ListView中屏蔽双击时改变CheckBox状态(图一)
图一:添加用户控件

2、把该用户控件的名称命名为MyListView,单击确定后,打开MyListView类的代码窗口,进行如下修改:

Inherits System.Windows.Forms.UserControl

改为

Inherits System.Windows.Forms.ListView

表示我们的用户控件继承于ListView类。

3、然后在它的下面声明一个常量,表示鼠标左键的双击动作:

Private Const WM_LBUTTONDBLCLK As Integer = 515

4、重写WndProc方法

Protected Overloads Overrides Sub WndProc(ByRef m As Message)

If m.Msg = WM_LBUTTONDBLCLK Then

Dim p As Point = PointToClient(New Point(Cursor.Position.X, Cursor.Position.Y))

Dim lvi As ListViewItem = GetItemAt(p.X, p.Y)

If Not lvi Is Nothing Then

lvi.Selected = True

End If

lvi = Nothing

OnDoubleClick(New EventArgs)

Else

MyBase.WndProc(m)

End If

End Sub

http://www.qqread.com/book/myvbnet/my0048.html

5、重新生成项目,然后在工具箱——我的用户控件中找到MyListView 控件,如下图所示:

ListView中屏蔽双击时改变CheckBox状态(图二)
图二:用户控件

现在我们就可以如同使用ListView 控件一样把MyListView 控件拖放到窗体上并使用它了,它是继承于ListView类的,所以除了我们增加的双击不改变复选框的状态以外,其它用法与ListView 控件都是一样的。

浏览URL http://www.qqread.com/book/myvbnet/my0048.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章