从Visual Basic 6中的所有对象中删除焦点

时间:2011-02-22 16:23:27

标签: visual-studio vb6 focus setfocus

是否有一种方法可以让用户点击表单本身,并且这样做可以从当前拥有它的任何对象(文本框,组合框等)中删除焦点?基本上,可以一次性从一切中均匀地删除焦点吗?

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

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

谢谢!

4 个答案:

答案 0 :(得分:2)

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

在您的情况下,您可以将PictureBox设置为TabStop false,将BorderStyle设置为0,TabIndex设置为0,而不是其他所有控件,但不包含任何可聚焦控件并在运行时通过ScaleWidth将其拉伸到ScaleHeight

您必须将标签和任何无窗口控件放在此后台PictureBox中。

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

答案 1 :(得分:1)

当表单处于活动状态时,通常需要关注某些内容。听起来你只是想“不显示”特定控件的焦点。

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

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

考虑到这个问题。我可能会在表单上放一个按钮,然后在表单加载时将其移出屏幕。确保它不是标签停止,但是当你想要隐藏焦点时,专门将焦点设置到按钮,确保按钮在标签顺序中仍然是STILL,即使它不是标签停止,因此用户可以按下标签在按钮上,最终合乎逻辑。

答案 2 :(得分:0)

没有VB方便,但你能简单地删除TabStop吗?

for x = 1 to me.Controls.count
    me.Controls(x).TabStop = 0
next

答案 3 :(得分:0)

我有一个picturebox和一个表单控件。

Private Sub cmdButton_Click
   PictureBox.setFocus
   Exit sub
End sub

该控件不会更改其外观,picturebox也不会更改。

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