You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中TextBox控件Select全选功能仅隔次生效问题求助

问题根源

你遇到的隔次生效问题本质是TextBox控件的选中状态仅在获得输入焦点时才会可视化显示,而Leave事件触发时控件已经处于失焦流程中:

  • 你在Leave事件中直接调用Select方法时,控件已经失去焦点,设置的选中状态会被保留但不会显示,你会误以为操作失效
  • 下次你点击/切回TextBox时,控件重新获得焦点,之前设置的选中状态才会显示出来,看起来就像“隔次生效”

解决方案

将所有全选操作改为通过BeginInvoke异步执行,等待当前焦点切换流程完成后再设置焦点+全选,避免被系统默认的焦点逻辑覆盖。你可以把代码中所有txtBrochsteinsID.Select(0, txtBrochsteinsID.Text.Length)替换为以下代码:

Me.BeginInvoke(Sub()
    ' 先将焦点切回文本框,确保选中状态可见
    txtBrochsteinsID.Focus()
    ' 内置SelectAll方法比手动指定起始位置更简洁稳定
    txtBrochsteinsID.SelectAll()
End Sub)

补充说明

如果你不需要校验完成后自动切回文本框,仅希望用户下次聚焦时自动全选,可以直接把全选逻辑放到TextBox的Enter事件中,代码更简单:

Private Sub TxtBrochsteins_Enter(sender As Object, e As EventArgs) Handles txtBrochsteinsID.Enter
    txtBrochsteinsID.SelectAll()
End Sub

这种方案下无需在Leave事件中写任何全选相关代码,只要用户切回文本框就会自动全选现有内容,完全满足直接输入覆盖的需求。

内容的提问来源于stack exchange,提问作者John Schmalz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:54:07