Winform textBox 禁止闪烁光标(焦点)

本文讲的是如何禁止textBox控件当中不出现那个闪烁的 “ | ” 光标,这是通俗叫法啊,

如下图所示:

应该是输入焦点,如何禁止它,winform本身可能需要重写,感觉挺麻烦的,

所以找了很多资料,终于找到这么个方法,使用win32函数禁止,

代码如下:

using System.Runtime.InteropServices;

[DllImport("user32", EntryPoint = "HideCaret")]
//禁止焦点
private static extern bool HideCaret(IntPtr hWnd);

在textBox控件的事件中添加一下事件:

private void tBox_Data2txt_MouseEnter(object sender, EventArgs e)
{
      HideCaret(this.tBox_Data2txt.Handle);
}

private void tBox_Data2txt_MouseDown(object sender, MouseEventArgs e)
{
      HideCaret(this.tBox_Data2txt.Handle);
}

这样就保证了随便点击的时候,也不会出现那个闪烁的光标了,如果还不能完全禁止的话,再添加控件其他可能会使出现光标的事件,

还有个地方需要设置哦,我以为上面的步骤已经OK了,我测试的时候,使用 Tab 按键,当焦点选中时,还是会出现 闪烁的光标,

所以还需要进一步设置:TabStop = False;  (我就不解释了,看图)

如下图:

 

再次测试,竟然还有会出现,“选中控件--》最小化窗体--》还原窗体” ,这个过程后,还是出现

这个暂时没找解决方法,不过思路应该是这样的:主窗体最小化的时候,然后再还原,要是控件知道这个事件就好了

(待解决中…………)

期待你有更好的方法,分享,谢谢,

愿上帝赐福与你!

原文地址:https://www.cnblogs.com/craigtao/p/4349796.html