编辑代码

Public Class Form1
    Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
    Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Const GCL_HCURSOR = (-12)
    Const IDC_IBEAM = 32513
    Const IDC_DUALIBEAM = 32514
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' 获取默认光标
        Dim hCursor As Long
        hCursor = LoadCursor(0, IDC_IBEAM)
        ' 设置单竖杠光标
        SetClassLong(Me.Handle.ToInt32, GCL_HCURSOR, hCursor)
    End Sub
    Private Sub Form1_InputLanguageChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.InputLanguageChangedEventArgs) Handles Me.InputLanguageChanged
        If InputLanguage.CurrentInputLanguage.LayoutName.Contains("中文") Then
            ' 获取默认光标
            Dim hCursor As Long
            hCursor = LoadCursor(0, IDC_DUALIBEAM)
            ' 设置双竖杠光标
            SetClassLong(Me.Handle.ToInt32, GCL_HCURSOR, hCursor)
        Else
            ' 获取默认光标
            Dim hCursor As Long
            hCursor = LoadCursor(0, IDC_IBEAM)
            ' 设置单竖杠光标
            SetClassLong(Me.Handle.ToInt32, GCL_HCURSOR, hCursor)
        End If
    End Sub
End Class