关于修改TextBox的光标(Caret)的疑问,大家来帮忙看看~~~
我想在VB.NET中修改TextBox的光标,代码如下
Private Declare Function CreateCaret Lib "user32" (ByVal Hwnd As Integer, ByVal hBitmap As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer) As Integer
Private Declare Function ShowCaret Lib "user32" (ByVal Hwnd As Long) As Integer
Private Declare Function GetFocus Lib "user32" () As Integer
Private Sub ChangeCur()
Dim tagHwnd As Integer
Dim picHwnd As Integer
tagHwnd = GetFocus()
picHwnd = picCaret.Handle.ToInt32
CreateCaret(tagHwnd, picHwnd, 0, 0)
ShowCaret(tagHwnd)
End Sub
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
ChangeCur()
End Sub
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
ChangeCur()
End Sub
picCaret是一个PictureBox,随便选择了一个icon作为图片
VB.NET中API声明与VB6有些区别,主要是变量类型位数变了,不知道API的声明是否正确?
上面的代码中,运行效果是,在KEYUP和KEYDOWN事件触发后,TextBox的光标消失了,
感觉是CreateCaret的第2个参数hBitMap取得有问题(picHwnd = picCaret.Handle.ToInt32)
大家来帮帮忙吧:)