MaskedTextBox的聚焦和光标位置
遇到一個(gè)關(guān)于MaskedTextBox聚焦和光標(biāo)居左的問(wèn)題。
①. 先說(shuō)說(shuō)聚焦:
起初給MaskedTextBox設(shè)置了Focus(),運(yùn)行之后,并沒(méi)有作用。
然后又給Form添加了Load事件,又設(shè)置了Focus(),再一次Failure了。
好吧,本著不達(dá)目的不吃飯的原則。又給Form添加了一個(gè)Activated事件,依舊設(shè)置Focus()。結(jié)果,不成想可以了。
這里先給出Load事件和Activated的區(qū)別首先Load事件只會(huì)在第一次窗口顯示前發(fā)生。 它的執(zhí)行順序是在InitializeComponent之后。
然后是Activated事件則是在代碼激活或者窗體激活發(fā)生?(這段似不似沒(méi)明白,簡(jiǎn)單理解就是窗體重繪Paint時(shí)會(huì)出發(fā)生。有興趣的朋友可以debug一下,切身體驗(yàn)一下,我只能說(shuō)根本停不下來(lái))。 它的執(zhí)行順序?qū)嵲贚oad之后。
來(lái)說(shuō)說(shuō)Load事件為什么不起作用,這是因?yàn)長(zhǎng)oad事件執(zhí)行時(shí)MaskedTextBox并沒(méi)有顯示在窗體上(不信的同學(xué)可以自己試一試)。
? ? 之后又試了一種方法,就是使用Select(),就不贅述了,直接上代碼:
1 public TestForm() 2 { 3 InitializeComponent(); 4 mask.Select(); //MaskedTextBox控件 5 }到這里,聚焦的問(wèn)題算是解決了。目前來(lái)看是兩種方案: 添加Activated事件和使用Select()。
②.? 再說(shuō)說(shuō)光標(biāo):
說(shuō)到光標(biāo)很快就想到SelectionStart這個(gè)屬性。
也是很悲催的用了Enter和MouseClick都失敗了。最后用了Click之后,才發(fā)現(xiàn)這才是真愛(ài)
直接上代碼:
1 private void ClickMask(object sender, EventArgs e) 2 { 3 // 每次點(diǎn)擊后,讓光標(biāo)居文本左邊 4 mask.SelectionStart = mask.SelectionLength; 5 }③. 最后來(lái)總結(jié):
吐槽一下,成功的路是曲折的,但是收獲總是滿滿的。
轉(zhuǎn)載于:https://www.cnblogs.com/MonkeyKingK/p/4960609.html
總結(jié)
以上是生活随笔為你收集整理的MaskedTextBox的聚焦和光标位置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Search Insert Positi
- 下一篇: redis初试牛刀