【问题标题】:Wpf window title bar mouse activityWpf窗口标题栏鼠标活动
【发布时间】:2020-01-09 13:36:33
【问题描述】:

我正在尝试在窗口标题栏上获取事件(对于标准 wpf 窗口)。

一个简单的鼠标按下事件(无论按钮如何)就足够了。 这个想法是,当用户在控件外部单击时,我想对自定义控件(包含文本框)执行操作。

现在我正在向控件添加两个事件处理程序以帮助实现这一点: UIElement.IsKeyboardFocusWithinChanged 和 Window.PreviewMouseDown。它几乎可以完美地与这两个事件一起工作,除非用户单击窗口标题栏,因为这两个事件都没有被触发......

有什么想法吗?谢谢

【问题讨论】:

    标签: wpf window mouseevent titlebar


    【解决方案1】:

    您可以使用以下代码检查是否单击了窗口边框:

    private const int WM_NCLBUTTONDOWN = 0x00a1;
    
    // added after window loaded
    HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
    source.AddHook(new HwndSourceHook(WndProc));
    
    private static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
    {
        switch (msg)
        {
            case WM_NCLBUTTONDOWN:
                // your action
                break;
        }
    
        return IntPtr.Zero;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-11
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      相关资源
      最近更新 更多