如果在其他地方点击,则移除焦点

时间:2011-04-10 18:42:30

标签: vb.net winforms visual-studio

我有一个文本框,我希望如此,如果用户点击不是文本框本身的表单上的任何地方,这样的文本框就会失去焦点。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

将表单的ActiveControl属性设置为null,以达到您想要的效果。

请注意,这与所有其他程序的功能相反,因此用户期望与实际用户体验之间存在脱节。我会反对它。

答案 1 :(得分:3)

某些事情需要得到关注。那是你应该点击的东西。最好是表单上的另一个控件,表单本身不需要关注。它没用。或者点击“开始”按钮。

答案 2 :(得分:0)

我添加了这个,因为我的声誉没有足够的学分(只编码30多年lol)。 我找到了Lasse的Activecontrol to Nothing(VB)答案的用法 - 我在表单deacivate事件中使用它,所以当该表格失去焦点时,它将焦点从主动控件上移开。这是我和用户想要的(我通过我的自定义控件库突出显示它们的焦点控件,因为从用户的角度来看它没有焦点我需要在(父)表单不在时从控件中删除它使用)。这种用法很不寻常,因为我正在创建一些“动态”的表单,作为我正在编写的一种控制分离/取消功能。

那说它是我测试的早期,所以它可能还没有生产,但这是一种长篇大论的说法,我不能赞成Lasse,并且有一些奇怪的场合他的答案很有启发性。

答案 3 :(得分:0)

只需将控件放在面板中,将焦点放在无害控件上(如标签):

Private Sub Panel1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.Click
        Label1.Focus()
End Sub