防止专注于控制

时间:2016-01-11 11:28:08

标签: vb.net winforms

我正在开展一个项目,我有一个输入验证。 旁边有一组可以按的按钮。聚焦输入时,将显示按钮。但是当你点击其中一个按钮时,输入的焦点消失了,验证将开始,按钮将被隐藏。

我想要的是输入焦点在任何时候都不会丢失。

单击按钮时是否可以不激活/聚焦按钮,还是可以在不丢失的情况下强制对焦输入?

我在Control上试过这个,但似乎只在表单上工作:

Const WS_EX_NOACTIVATE As Integer = &H8000000
Const WS_EX_TOOLWINDOW As Integer = &H80

Protected Overrides ReadOnly Property CreateParams As CreateParams
    Get
        Dim ret As CreateParams = MyBase.CreateParams
        ret.ExStyle = ret.ExStyle Or WS_EX_NOACTIVATE Or WS_EX_TOOLWINDOW
        Return ret
    End Get
End Property

2 个答案:

答案 0 :(得分:1)

您可以创建自定义按钮并使其不可选:

Public Class MyButton
    Inherits Button

    Public Sub New()
        SetStyle(ControlStyles.Selectable, False)
    End Sub

End Class

如果您不想创建自定义控件,请将CausesValidation = False设置为普通按钮,它将获得焦点,但不会导致验证。

答案 1 :(得分:0)

将按钮的TabStop property设置为false。

通过将此设置为false,您可以在用户标签时阻止他们获得焦点,但他们仍然可以点击。