【问题标题】:Prevent focus on Control防止专注于控制
【发布时间】:2016-01-11 19:57:58
【问题描述】:

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

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

是否可以在单击按钮时不激活/聚焦按钮,或者是否可以强制聚焦而不丢失输入?

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

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

【问题讨论】:

标签: vb.net winforms


【解决方案1】:

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

Public Class MyButton
    Inherits Button

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

End Class

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

【讨论】:

    【解决方案2】:

    将按钮的TabStop property 设置为false。

    通过将此设置为 false,您将阻止它们在用户选项卡时获得焦点,但它们仍然是可点击的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      相关资源
      最近更新 更多