2

是否有一种方法可以让用户单击表单本身,然后从当前拥有的任何对象(文本框、组合框等)中移除焦点?基本上,焦点可以一次从所有事物中统一移除吗?

将焦点设置到表单本身不起作用。

我想过做旧的“将占位符按钮隐藏在另一个对象后面”的技巧,但我真的不喜欢那个。

谢谢!

4

4 回答 4

2

在 VB6 中,aPictureBox可以获得焦点,即使它不包含任何控件。

在您的情况下,您可以将 a设置PictureBoxTabStopfalse,BorderStyle设置为 0,在所有其他控件后面设置为 0,但不包含任何可聚焦的控件,并在运行时TabIndex将其拉伸到ScaleWidthby 。ScaleHeight

您也必须在此背景中放置标签和任何无窗口控件PictureBox

这样,当用户单击“表单”时,焦点将“消失”。使用“无焦点”Tab键将首先控制焦点(TabIndex设置为 1 的那个)。

于 2011-02-23T14:39:52.797 回答
1

当表单处于活动状态时,通常必须具有焦点。听起来您只是不想“显示”特定控件具有焦点。

如果是这种情况,它将取决于控件。有些具有控制特定控件是否以某种方式“指示”其焦点的属性。

但是内置的 Windows 控件将始终显示它们的焦点状态,除非您将它们子类化

鉴于这个问题。我可能会在表单上放一个按钮,然后在表单加载时将其移出屏幕。确保它不是制表位,但是当您想隐藏焦点时,将焦点专门设置为按钮,确保按钮仍然按制表位顺序排列,即使它不是制表位,所以用户可以在按下制表符的同时在按钮上并最终到达合乎逻辑的地方。

于 2011-02-22T22:44:20.390 回答
0

手边没有 VB,但你能简单地删除 TabStop 吗?

for x = 1 to me.Controls.count
    me.Controls(x).TabStop = 0
next
于 2011-02-22T22:34:42.017 回答
0

picturebox在表单上有一个和一个控件。

Private Sub cmdButton_Click
   PictureBox.setFocus
   Exit sub
End sub

控件不会改变它的外观,picturebox.

当然,If-Then如果您希望控件有时正常响应,则需要添加一个子句。

于 2020-11-15T04:16:52.233 回答