更改Caret颜色或隐藏它VB.NET

时间:2011-09-13 01:12:25

标签: vb.net winforms textbox

我在VB.NET中制作一个程序,需要在文本框中隐藏Caret。

我可以将它完全隐藏,或者只是与文本框背景颜色相同的颜色。我该怎么做呢?如果可能的话,我宁愿远离自定义控件。

谢谢

1 个答案:

答案 0 :(得分:5)

在项目中添加一个新类并粘贴下面显示的代码。编译。将新控件从工具箱顶部拖放到表单上。

Public Class NoCaretBox
  Inherits TextBox

  Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs)
    HideCaret(Me.Handle)
    MyBase.OnGotFocus(e)
  End Sub

  Protected Overrides Sub OnLostFocus(ByVal e As System.EventArgs)
    ShowCaret(Me.Handle)
    MyBase.OnLostFocus(e)
  End Sub

  Private Declare Function HideCaret Lib "user32.dll" (ByVal hWnd As IntPtr) As Boolean
  Private Declare Function ShowCaret Lib "user32.dll" (ByVal hWnd As IntPtr) As Boolean
End Class