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; (我就不解释了,看图)
如下图:
再次测试,竟然还有会出现,“选中控件--》最小化窗体--》还原窗体” ,这个过程后,还是出现
这个暂时没找解决方法,不过思路应该是这样的:主窗体最小化的时候,然后再还原,要是控件知道这个事件就好了
(待解决中…………)
期待你有更好的方法,分享,谢谢