如何 select 在文本框中输入文本?

How to select text in a textbox?

我有一个带有文本框的用户表单。我想 select 在 keyDown 事件之后(突出显示)内的文本。

最终用户可以输入的内容有一些限制。如果输入错误,将弹出一条消息,文本框中邀请用户输入内容的文本应为 selected。

我使用以下代码:

Me.txtbox_add_folder.SetFocus
Me.txtbox_add_folder.SelStart = 0
Me.txtbox_add_folder.SelLength = Len(Me.txtbox_add_folder.Text)

setFocus 不起作用。好像是因为 setFocus 触发了一系列其他事件 see this discussion.

在不同的讨论中提出的解决方案是包含一个DoCmd.CancelEventCancel = True,这样焦点就不会转到另一个控件上,但是这些命令对Excel.

 Application.enableevents = false
 Me.txtbox_add_folder.SetFocus
 Me.txtbox_add_folder.SelStart = 0
 Me.txtbox_add_folder.SelLength = Len(Me.txtbox_add_folder.Text)
 Application.enableevents = true

这项技术有点老套,但它以前对我有用。它将光标放在文本框中并执行 Ctrl+A 命令(select 全部),这将突出显示该文本框中的文本。

Me.txtbox_add_folder.SetFocus
SendKeys "^A"

我终于找到了解决办法。实际上焦点在事件发生后自动丢失,所以为了避免这种情况,应该关闭属性中的 TabStop 参数。

我的解决方案是在所有 个具有制表位的项目上打开制表位,但有问题的文本框除外

然后,在应用程序执行我要求它对文本框条目执行的任何操作后,使用 Application.SendKeys "{TAB"}

我知道这很粗糙,但是当您想将文本框用作房间另一端的条形码扫描仪条目时。

对我有用,但它是一个非常简单的用户表单。