是否有一种方法可以让用户单击表单本身,然后从当前拥有的任何对象(文本框、组合框等)中移除焦点?基本上,焦点可以一次从所有事物中统一移除吗?
将焦点设置到表单本身不起作用。
我想过做旧的“将占位符按钮隐藏在另一个对象后面”的技巧,但我真的不喜欢那个。
谢谢!
是否有一种方法可以让用户单击表单本身,然后从当前拥有的任何对象(文本框、组合框等)中移除焦点?基本上,焦点可以一次从所有事物中统一移除吗?
将焦点设置到表单本身不起作用。
我想过做旧的“将占位符按钮隐藏在另一个对象后面”的技巧,但我真的不喜欢那个。
谢谢!
在 VB6 中,aPictureBox
可以获得焦点,即使它不包含任何控件。
在您的情况下,您可以将 a设置PictureBox
为TabStop
false,BorderStyle
设置为 0,在所有其他控件后面设置为 0,但不包含任何可聚焦的控件,并在运行时TabIndex
将其拉伸到ScaleWidth
by 。ScaleHeight
您也必须在此背景中放置标签和任何无窗口控件PictureBox
。
这样,当用户单击“表单”时,焦点将“消失”。使用“无焦点”Tab
键将首先控制焦点(TabIndex
设置为 1 的那个)。
当表单处于活动状态时,通常必须具有焦点。听起来您只是不想“显示”特定控件具有焦点。
如果是这种情况,它将取决于控件。有些具有控制特定控件是否以某种方式“指示”其焦点的属性。
但是内置的 Windows 控件将始终显示它们的焦点状态,除非您将它们子类化
鉴于这个问题。我可能会在表单上放一个按钮,然后在表单加载时将其移出屏幕。确保它不是制表位,但是当您想隐藏焦点时,将焦点专门设置为按钮,确保按钮仍然按制表位顺序排列,即使它不是制表位,所以用户可以在按下制表符的同时在按钮上并最终到达合乎逻辑的地方。
手边没有 VB,但你能简单地删除 TabStop 吗?
for x = 1 to me.Controls.count
me.Controls(x).TabStop = 0
next
我picturebox
在表单上有一个和一个控件。
Private Sub cmdButton_Click
PictureBox.setFocus
Exit sub
End sub
控件不会改变它的外观,picturebox
.
当然,If-Then
如果您希望控件有时正常响应,则需要添加一个子句。