zoukankan      html  css  js  c++  java
  • MaskedTextBox的聚焦和光标位置

    遇到一个关于MaskedTextBox聚焦和光标居左的问题。

    ①. 先说说聚焦:

      起初给MaskedTextBox设置了Focus(),运行之后,并没有作用。

      然后又给Form添加了Load事件,又设置了Focus(),再一次Failure了。

      好吧,本着不达目的不吃饭的原则。又给Form添加了一个Activated事件,依旧设置Focus()。结果,不成想可以了。

    这里先给出Load事件和Activated的区别

      首先Load事件只会在第一次窗口显示前发生。 它的执行顺序是在InitializeComponent之后。

      然后是Activated事件则是在代码激活或者窗体激活发生 (这段似不似没明白,简单理解就是窗体重绘Paint时会出发生。有兴趣的朋友可以debug一下,切身体验一下,我只能说根本停不下来)。 它的执行顺序实在Load之后。

      来说说Load事件为什么不起作用,这是因为Load事件执行时MaskedTextBox并没有显示在窗体上(不信的同学可以自己试一试)。

        之后又试了一种方法,就是使用Select(),就不赘述了,直接上代码:

    1 public TestForm()
    2 {
    3     InitializeComponent();
    4     mask.Select(); //MaskedTextBox控件
    5 }

      到这里,聚焦的问题算是解决了。目前来看是两种方案: 添加Activated事件和使用Select()

    ②.  再说说光标:

      说到光标很快就想到SelectionStart这个属性。

      也是很悲催的用了EnterMouseClick都失败了。最后用了Click之后,才发现这才是真爱

      直接上代码:

    1 private void ClickMask(object sender, EventArgs e)
    2 {
    3     //  每次点击后,让光标居文本左边
    4     mask.SelectionStart = mask.SelectionLength;
    5 }

    ③. 最后来总结:

      吐槽一下,成功的路是曲折的,但是收获总是满满的。

  • 相关阅读:
    Hadoop--单点故障修复
    Hadoop---静动态增删节点
    sqlserver 通知应用程序(存储过程通过http调用接口)
    sqlserver 资源等待
    sqlserver 性能优化
    sqlserver 资源等待
    sqlserver 查看内存情况
    sqlserver动态管理视图
    常见散列算法
    sqlserver 性能检测 和 监控
  • 原文地址:https://www.cnblogs.com/MonkeyKingK/p/4960609.html
Copyright © 2011-2022 走看看