c# 为自定义控件添加鼠标双击事件

最近在用一个厂家提供的控件(c++写的),这个控件只可以响应鼠标右键事件(厂家提供的接口),但是不能响应鼠标双击事件,现在我想在这个控件上添加双击事件(在c#环境下),我... 最近在用一个厂家提供的控件(c++写的),这个控件只可以响应鼠标右键事件(厂家提供的接口),但是不能响应鼠标双击事件,现在我想在这个控件上添加双击事件(在c#环境下),我该如何扩展这个类?谢谢! 展开
 我来答
SK蓮華生輝
推荐于2017-08-06 · TA获得超过199个赞
知道小有建树答主
回答量:56
采纳率:0%
帮助的人:0
展开全部
厂家提供的控件都是封装好的,就算你扩展这个类也只能添加功能,不能直接响应双击事件。

但是你可以拦截这个控件的双击消息。

以下代码可加在控件的父窗口(假设为Form1),并在Form1初始化后安装拦截挂钩。同样的方法也可屏蔽那控件的其它消息,如屏蔽它的右键事件。

private const int GWL_WNDPROC = -4;
private const int WM_LBUTTONDOWN=0x0201;
private const int WM_LBUTTONUP=0x0202;
private const int WM_LBUTTONDBLCLK=0x0203;//双击消息

[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, MyWndProc wndProc);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

public delegate IntPtr MyWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

private IntPtr OldWndProc = IntPtr.Zero;
private MyWndProc Wpr = null;

private IntPtr MyControlWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
{
switch (msg)
{
case WM_LBUTTONDBLCLK://拦截双击消息

/*在这里,你想干什么就干什么*/
.......................
.......................

return (IntPtr)0;
default:
return CallWindowProc(OldWndProc, hWnd, msg, wParam, lParam);
}
}

//假设那个控件变量名为 _thatControl

private void InitializeThatControl()
{
//初始化的时候安装消息拦截
this.Wpr = new MyWndProc(this.MyControlWndProc);
this.OldWndProc = SetWindowLong(_thatControl.Handle, GWL_WNDPROC, Wpr);
}

public Form1()
{
InitializeComponent();
InitializeThatControl();//加这句,在Form初始化后安装消息拦截
}
百度网友575e298
2010-08-31
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
能看到源码么?
能看到的话继续用c++写
或者添加自定义控件继承这个控件,再重写OnDoubleClick事件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w424521
2010-09-03
知道答主
回答量:6
采纳率:0%
帮助的人:6.5万
展开全部
在源代码上加个事件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
weizhong1688
2010-08-31 · TA获得超过1246个赞
知道小有建树答主
回答量:1514
采纳率:61%
帮助的人:586万
展开全部
你没有源代码,怎么加?与提供厂家联系吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式