【问题标题】:Vscrollbar doesn't disappear after titlebar click单击标题栏后,Vscrollbar 不会消失
【发布时间】:2020-06-25 18:08:11
【问题描述】:

我的项目中有一个 vscrollbar,我想让它在鼠标消失时消失 点击它之外的任何东西。 我已经尝试过 (Leave) 和 (Lost Focus) 事件并且他们成功了:

Private Sub VScrollBar1_Leave(sender As Object, e As EventArgs) Handles VScrollBar1.Leave

    VScrollBar1.Visible = False

End Sub
Private Sub VScrollBar1_LostFocus(sender As Object, e As EventArgs) Handles VScrollBar1.LostFocus

    VScrollBar1.Visible = False

End Sub

问题是单击(标题栏)时,没有任何反应,滚动条 仍然可见,有什么建议吗?

【问题讨论】:

  • 表单本身、PictureBox、Panels、TableLayoutPanels、其他滚动条等也会有同样的问题,即所有不会窃取 焦点。
  • 我的意思是,也许您可​​以处理 WM_MOUSELEAVE(或 MouseLeave 事件)。您可以将 ScrollBar 添加到面板(将其设置为 TabStop = true),比滚动条稍大,并使用 ScrollBar 的 MouseLeave 事件来隐藏它并使用 Panel MouseEnter 事件,如果/当 ScrollBar.ClientRectangle 在延迟过去后包含 MousePosition 时。

标签: vb.net winforms scrollbar titlebar


【解决方案1】:

标题栏没有点击事件,但您可以为它(创建)一个

您的代码运行良好,您只需添加以下代码:

Private Const WM_NCLBUTTONDOWN As Long = &HA1
Protected Overrides Sub DefWndProc(ByRef m As System.Windows.Forms.Message)
    If CLng(m.Msg) = WM_NCLBUTTONDOWN Then
        Focus()
    End If
    MyBase.DefWndProc(m)
End Sub

这将使您专注于您的表单,这将使您的代码完美运行...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 2022-09-28
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多