WPF 解决ShowInTaskbar=false的窗口在失去焦点后无法找到的问题

本文介绍了在WPF中遇到设置ShowInTaskbar=false的窗口在失去焦点后不可见,无法与主窗体交互的问题。通过提供关键代码和示例,解释了解决该问题的方法,确保窗口能正常显示并进行交互。
摘要由CSDN通过智能技术生成

效果如图所示
这是失去焦点后找不到窗口,并且无法与主窗体交互的情况

这是修复后可以正常交互的情况

解决方法是设置Owner属性

关键代码
//GetForegroundWindow API
[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

//从Handle中获取Window对象
static Window GetWindowFromHwnd(IntPtr hwnd)
{
    var window = HwndSource.FromHwnd((IntPtr)hwnd);
    dynamic customWindow = window.RootVisual;
    return customWindow;
}

//调用GetForegroundWindow然后调用GetWindowFromHwnd
static Window GetTopWindow()
{
    var hwnd = GetForegroundWindow();
    if (hwnd == null)
        return null;

    return GetWindowFromHwnd(hwnd);
}

public NotShowInTaskbarWindow(bool isSetOwner,Window window=null)
{
    InitializeComponent();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值