Visual Studio控制台 - 像闪烁光标?

时间:2016-02-13 20:10:32

标签: vb.net visual-studio

有没有办法让光标看起来像控制台应用程序中使用的闪烁方形光标,比如在文本框内而不是常规垂直线?例: https://gyazo.com/db9f5661d493c32e48434eed2fa45252

1 个答案:

答案 0 :(得分:0)

您可以使用Win API Caret Functions控制插入符号(光标)。

一个简单的自定义WinForm TextBox可以像这样一个闪烁的插入符号:

Public Class MyTB : Inherits TextBox
   <DllImport("user32.dll", SetLastError:=True)> _
   Private Shared Function CreateCaret(ByVal hWnd As IntPtr, ByVal hBitmap As IntPtr, ByVal nWidth As Integer, ByVal nHeight As Integer) As Boolean
   End Function

   <DllImport("user32.dll")>
   Private Shared Function DestroyCaret() As Boolean
   End Function

   <DllImport("user32.dll")>
   Private Shared Function SetCaretBlinkTime(ByVal uMSeconds As UInt32) As Boolean
   End Function

   <DllImport("user32.dll")> _
   Private Shared Function ShowCaret(ByVal hWnd As IntPtr) As Boolean
   End Function

   Protected Overrides Sub OnGotFocus(e As EventArgs)
      MyBase.OnGotFocus(e)
      MyTB.CreateCaret(Me.Handle, Nothing, 5, Me.Font.Height)
      MyTB.SetCaretBlinkTime(500UI)
      MyTB.ShowCaret(Me.Handle)
   End Sub

   Protected Overrides Sub OnLostFocus(e As EventArgs)
      MyBase.OnLostFocus(e)
      MyTB.DestroyCaret()
   End Sub
End Class