是否有一种方法可以让用户点击表单本身,并且这样做可以从当前拥有它的任何对象(文本框,组合框等)中删除焦点?基本上,可以一次性从一切中均匀地删除焦点吗?
将焦点设置为表单本身不起作用。
我想过做旧的“隐藏另一个对象背后的占位符按钮”技巧,但我真的不喜欢它。
谢谢!
答案 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
子句。