gpt4 book ai didi

c# - WPF 窗口不可点击

转载 作者:太空宇宙 更新时间:2023-11-03 17:02:54 24 4
gpt4 key购买 nike

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

我已经尝试了 IsHitTestVisible、Focusable、IsManipulationEnabled、ResizeMode、WindowStyle 并将它们全部设置为 false,但没有任何效果。我仍然可以单击该窗口,它会弹出 Windows 的任务栏,当您有一个本应全屏窗口化的游戏时,这会有点烦人。

我该怎么办?

更新:

通过更改一些 google 搜索词找到答案。

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);

最佳答案

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

关于c# - WPF 窗口不可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17395316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com