VB.NET WinForm:NumericUpDown获焦时自动选中文本无效的问题
解决NumericUpDown获取焦点时无法自动选中内容的问题
我之前也碰到过一模一样的麻烦!你写的代码逻辑本身没问题,但问题出在事件执行的时机上:当Enter事件触发时,NumericUpDown控件内部还有后续的焦点初始化流程,你调用Select()之后,控件自己的逻辑会把选中状态给重置掉,所以看起来完全没效果。
给你两个靠谱的解决方案:
方案一:用BeginInvoke延迟执行选中操作
把选中代码放到BeginInvoke里,让它在当前所有事件处理完成后再执行,这样就能避开控件内部的复位逻辑了:
Private Sub updown1_Enter(sender As Object, e As EventArgs) Handles updown1.Enter updown1.BeginInvoke(Sub() updown1.Select(0, updown1.Text.Length) End Sub) End Sub
方案二:改用GotFocus事件(可选)
有时候GotFocus事件的执行时机更适配,同样搭配延迟执行即可:
Private Sub updown1_GotFocus(sender As Object, e As EventArgs) Handles updown1.GotFocus updown1.BeginInvoke(Sub() updown1.Select(0, updown1.Text.Length) End Sub) End Sub
另外可以快速检查一下控件的ReadOnly属性有没有设为True——如果是的话也会导致选中操作失效,但从你的描述来看应该不是这个问题~
内容的提问来源于stack exchange,提问作者exceptional exception
相关产品推荐
相关产品推荐

