扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
me.Cursor.ToString()
创新互联是一家专业提供峨山县企业网站建设,专注与网站制作、网站建设、HTML5建站、小程序制作等业务。10年已为峨山县众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
或者可以枚举
me.cursor=Cursors.WaitCursor之类的
不过有以下局限:
自定义指针无法识别
窗口处于非激活状态可能无效
与其他控件可能冲突
几乎找不到真正VB.NET的api,都是自己将VB的api改成VB.NET的api,我的理解是声明中对应输入是H的地方保留Long,其他的Long改成Integer,既然VB.NET连MSDN都找不到较全的api说明,不保证api的用法在VB.NET其他版本中适用。
给你个好玩的例子,包括鼠标的隐藏(Ctrl_↓)、显示(Ctrl_↑),移动、点击
在Form1上放上2个TextBox,其中TextBox1.Multiline = True,并且面积大些,2个Button,运行后在TextBox1中点击一下会记录位置,移开鼠标,点击移动或点击Button,可模拟在TextBox1中的点击
Public Class Form1
Public My_MousePosition As Point
'模拟鼠标移动、点击
Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
'定义光标的位置
Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Integer, ByVal y As Integer) As Integer
'鼠标的隐藏
Declare Function ShowCursor Lib "user32" Alias "ShowCursor" (ByVal bShow As Integer) As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Multiline = True
Button1.Text = "点击"
Button2.Text = "移动"
Me.KeyPreview = True
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.Control And e.KeyCode = Keys.Down Then ShowCursor(0)
If e.Control And e.KeyCode = Keys.Up Then ShowCursor(1)
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
TextBox2.Text = MousePosition.X " " MousePosition.Y
End Sub
Private Sub TextBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseClick
My_MousePosition = MousePosition
TextBox1.Text = My_MousePosition.X " " My_MousePosition.Y vbCrLf
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
SetCursorPos(My_MousePosition.X, My_MousePosition.Y)
mouse_event(H2, 0, 0, 0, 0)
mouse_event(H4, 0, 0, 0, 0)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
SetCursorPos(My_MousePosition.X, My_MousePosition.Y)
End Sub
End Class
其中
mouse_event Lib "user32" (ByVal dwFlags As Long
的dwFlags的代码是
Const MOUSEEVENTF_LEFTDOWN = H2
Const MOUSEEVENTF_LEFTUP = H4
Const MOUSEEVENTF_MIDDLEDOWN = H20
Const MOUSEEVENTF_MIDDLEUP = H40
Const MOUSEEVENTF_MOVE = H1
Const MOUSEEVENTF_ABSOLUTE = H8000
Const MOUSEEVENTF_RIGHTDOWN = H8
Const MOUSEEVENTF_RIGHTUP = H10
调用api
在Visual Baisc.net中的声明:
Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_LEFTDOWN = H2 '模拟鼠标左键按下
Public Const MOUSEEVENTF_LEFTUP = H4 ’模拟鼠标左键释放
Public Const MOUSEEVENTF_MIDDLEDOWN = H20 '模拟鼠标中间键按下
Public Const MOUSEEVENTF_MIDDLEUP = H40 '模拟鼠标中间键释放
Public Const MOUSEEVENTF_RIGHTDOWN = H8 '模拟鼠标右键按下
Public Const MOUSEEVENTF_RIGHTUP = H10 '模拟鼠标右键释放
Public Const MOUSEEVENTF_MOVE = H1 '模拟鼠标指针移动
例:
mouse_event MOUSEEVENTF_LEFTDOWN,10,10,0,0
'在(10,10)模拟鼠标左键按下
TextBoxBase.GetPositionFromCharIndex 方法
检索控件内指定字符索引处的位置。
此方法使您得以确定特定字符索引在控件中的位置。此方法可用于诸如显示快捷菜单项或控件中某个单词的帮助信息等任务。例如,如果希望当用户在控件中的单词上右击时向用户显示选项菜单,则可以使用此方法确定单词的位置以正确显示 ContextMenu 控件。
Control.PointToScreen 方法
将指定工作区点的位置计算成屏幕坐标。
比如你要更换在你某个窗体上的光标。
那么在这个窗体内用这样的代码
Me.Cursor = System.Windows.Forms.Cursors.Cross
如果你要更换当前系统显示的光标
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Cross
其中Cross代表十字光标,你也可以更改成其他的,直接查看Cursors中的各成员就可以找到了。
改变鼠标位置或让鼠标消失。
Shift + 方向键 ,选择 从当前光标至移动后光标所在位置的所有文本
Ctrl+Shift+左右方向键,选择 从当前光标至下一(上一)单词首(尾)
Shift + Alt + 方向键,选择 由当前光标与 移动后光标所构成的矩形的区域内所有文本
Ctrl + 单击鼠标左键, 选择 单击位置的整个单词
Shift + 单击鼠标左键,选择 从当前光标至 鼠标单击位置区间的所有文本
Shift + Home(End), 选择 从当前光标至 行首(尾)的所有文本
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流