WPF窗口不可点击

本文关键字:窗口 WPF | 更新日期: 2023-09-27 18:20:34

我已经用WPF(C#和XAML)创建了一个记分板应用程序,当我通过复选框对其启用锁定时,我需要使一个窗口完全没有响应。这意味着你不能点击它,光标不会改变,尤其是当你点击它时,窗口任务栏不会出现。这个记分牌在游戏的顶部,记分牌是最顶部的窗口,但出于某种原因,我不能让它完全不可点击。

我尝试过IsHitTestVisible、Focusable、IsManipulationEnabled、ResizeMode、WindowStyle,并将它们都设置为false,但没有任何效果。我仍然可以点击窗口,它会弹出窗口的任务栏,当你有一个应该全屏显示的游戏时,它会变得有点烦人。

我该怎么办?

更新:

通过更改一些谷歌搜索词找到了答案。

Win32类

    //Rest of this code in located in the class itself
    public const int WS_EX_TRANSPARENT = 0x00000020;
    public const int GWL_EXSTYLE = (-20);
    [DllImport("user32.dll")]
    public static extern int GetWindowLong(IntPtr hwnd,
    int index);
    [DllImport("user32.dll")]
    public static extern int SetWindowLong(IntPtr hwnd,
    int index, int newStyle);
    public static void makeTransparent(IntPtr hwnd)
    {
     int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
     Win32.SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
    }
    public static void makeNotTransparent(IntPtr hwnd)
    {
        int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
        Win32.SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle ^ WS_EX_TRANSPARENT);
    }

事件

       base.OnSourceInitialized(e);
        IntPtr hwnd = new WindowInteropHelper(yourWindow).Handle;
        Win32.makeTransparent(hwnd);

WPF窗口不可点击

您尝试过IsEnabled=false吗?它适用于组件和窗口级别。

我看到这个博客,他们在XNA游戏中放置了Wpf控制。我已经尝试过它和它的工作,你可以放置你的窗口,它也不会出现在任务栏中,他们也给出了全屏的技术