• 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;  (我就不解释了,看图)

    如下图:

     

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

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

    (待解决中…………)

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

    愿上帝赐福与你!

  • 相关阅读:
    Linux C/C++ 利用scandir和alphasort遍历目录文件并排序
    C++11 多线程之互斥量、条件变量、call_once使用简介
    Win8 ApplicationModel Angkor:
    WinJS.Binding Angkor:
    WinJS.UI.Animation Angkor:
    WinJS.Class Angkor:
    WinJS.Application Angkor:
    WinJS.Promise Angkor:
    Rocket core ctrl_stalld和ctrl_killd
    Rocket core pipeline和replay
  • 原文地址:https://www.cnblogs.com/craigtao/p/4349796.html
Copyright © 2020-2023  润新知