如何实现鼠标右键点击TabControl的标签页时也能激活该标签页,
就像鼠标左键选择标签页一样。
就像鼠标左键选择标签页一样。
解决方案 »
- 判断字符串中是否有中文,如果有则取出
- 输入框要求可以输入半角英文数字符号和中文在线等
- (急切求助)WinCE5.0下同步、单步调试及网络异常提示问题(PDA设备)
- c#中,使用odp.net批量读取数据的问题
- C# Excel导入问题?提示少类型或者命名空间,已经导入了Microsfot.Excel 11 object还不可以啊.
- 控件&& 与不同窗体数据传递问题
- 如何将位图转换为单色位图?
- Main()中的string args是什么意思
- 如可繪一條直線
- 安装VSC#.NET的问题?
- winform 调用form.Show() 窗体无响应问题
- EXCEL用ADO.NET读取时.第一行有问题.数字读不出来.如果是空的显示NOname在线求助
Private Sub TabControl1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseDown
Dim p As New Point
p.X = TabControl1.MousePosition.X - Me.Left - TabControl1.Left
p.Y = TabControl1.MousePosition.Y - Me.Top - TabControl1.Top - 15
Dim tp As TabPage = Me.TabControl1.GetChildAtPoint(p)
Console.WriteLine("xx")
Console.WriteLine(p)
If Not tp Is Nothing Then
TabControl1.SelectedTab() = tp
End If End Sub====CSDN 小助手 V2.5 2005年11月05日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
下载:http://szlawbook.com/csdnv2
才来问的。问:为什么有那么多人对非标准的Windows操作方式如此热衷呢?......
答:什么叫非标准的Windows操作方式?vs.net的IDE就是这样的。
其实不仅vs.net,如果注意一下的话,会发现大部分通过
TabControl控制MDI窗体的软件,都有这个功能,即
在非当前激活的TabPage的标签页上右键时,先激活该TabPage,然后弹出菜单。
如Editplus,uedit等等。我现在的想到的方法是在MouseDown中判断,如果是右键,模拟一次左键点击。
我还没有这么做,不知道会不会有其它的副作用。
我前面所说的Windows标准操作方式是针对Windows操作系统界面来说的,
比如IE的Internet选项对话框的那些选项就使用一个标准的TabControl。至于VS.NET的那种方式,并没有说不好,只是这些新控件在设计上就支持这种操作方式,
而一定要那种“老式传统”的控件支持这种方式,就有点勉为其难了。当然也不是说不可能,如果你熟悉Spy++,Windows窗口属性,Windows消息传递机制,
以及一点点hack的精神,我想还是可以做到的。另外,你说“我现在的想到的方法是在MouseDown中判断,如果是右键,模拟一次左键点击。
我还没有这么做,不知道会不会有其它的副作用。”
至少在WinForm中不行,因为Mouse事件传递的参数中的Button属性都是只读的,不能替换,
这个我已经试过了。————————————————————给了思路,要代码;
给了代码,要C#;
给了C#代码,还说不明白......唉!这个世界做好人咋就这么难咧......
模拟鼠标方法如下:
定义:
private static extern int mouse_event(int dwFlags,int dx,int dy, int cButtons, int dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x0002;
调用:
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);暂不结帖,等待高人指点正统的解决方法。
[System.Runtime.InteropServices.DllImport("user32")]
private static extern int mouse_event(int dwFlags,int dx,int dy, int cButtons, int dwExtraInfo);
private const int MOUSEEVENTF_LEFTDOWN = 0x0002;