求助:点击TextBox时自动全选文本的实现问题(现有代码无效)
解决TextBox点击时全选文本的问题
嘿,我完全懂你的困扰!你推测的原因太对了——Enter事件确实是在控件即将获得焦点但还没真正拿到焦点的时候触发的,这时候你写的选中文本代码根本没法生效,因为控件还没进入可编辑的焦点状态呢。
给你两个靠谱的解决方案,按需选就行:
方案1:用GotFocus事件(适配所有获焦场景)
这个事件是在控件已经成功获得焦点后触发的,完美匹配你的需求。替换成下面的代码就行:
Private Sub TextBox_GotFocus() With Me.TextBox .SelStart = 0 .SelLength = Len(.Text) End With End Sub
这里不需要额外调用.SetFocus,因为触发这个事件时,TextBox已经稳稳拿到焦点了,直接设置选中文本的起始位置和长度就能立刻生效。
方案2:用MouseDown事件(仅鼠标点击时触发)
如果你只想在用户用鼠标点击TextBox的时候才全选文本(不想让Tab键切换焦点时也触发),那就用这个事件:
Private Sub TextBox_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) With Me.TextBox .SetFocus .SelStart = 0 .SelLength = Len(.Text) End With End Sub
当用户点击控件时,先强制让它获得焦点,再执行全选操作,确保点击后立刻高亮所有文本。
对了,要是你在代码窗口找不到GotFocus事件,记得在左侧下拉菜单选中你的TextBox,然后右侧的事件下拉菜单里就能找到它啦,肯定藏在里面的😉
内容的提问来源于stack exchange,提问作者sporc
相关产品推荐
相关产品推荐

