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 }

③. 最后来总结:

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

转载于:https://www.cnblogs.com/MonkeyKingK/p/4960609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值