【发布时间】:2011-02-25 12:09:45
【问题描述】:
在 A2003 和 A2007 中工作。
我们如何确保在表单加载时选定的 TextBox 获得焦点?如果我们将 MyTextBox.SetFocus 放在 Form_Load 中,则会出现错误:
can't move the focus to the control
此表单专为快速输入数据而设计,并且表单会根据上次使用的设置重新排列自身。所以有几个不同的文本框,其中任何一个都可能需要根据用户的焦点。我们不能只在设计时通过给 MyTextBox TabIndex=0 来修复它。
帮助说明了一些关于调用 Repaint 的内容,这根本没有任何意义:
您只能将焦点移动到 可见的控件或表单。一个表格和 窗体上的控件不可见 直到表单的 Load 事件有 完成的。因此,如果您使用 表单的 Load 事件中的 SetFocus 方法 要将焦点移至该表格,您 必须在之前使用 Repaint 方法 SetFocus 方法。
【问题讨论】:
-
您使用的是
MyTextBox.SetFocus(带有适当的控件名称)还是Me!MyTextBox.SetFocus(或Me.MyTextBox.SetFocus)?除了作为父窗体的成员之外,引用控件绝不是一个好主意,并且可能存在设置解决未指定控件引用所需的命名空间的时间问题。但是,我只是在我的测试表单中尝试了未指定的控件,并且没有我它工作得很好!或我。 -
@David-W-Fenton 现在我真的很困惑。我以为凯文·罗斯在
-
凯文的回答并没有真正解决这个问题。在我的测试示例中,我根本不需要重绘。您是否澄清过您是否有记录源,并且有时在没有加载记录的情况下打开表单?在这种情况下,控件将不存在,因此您无法为其设置焦点。
标签: ms-access textbox setfocus