You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF C#中如何将已存在的指定窗口置于前台并获取焦点

WPF 单实例窗口前置解决方案

你当前的代码已经实现了阻止打开多个About窗口的逻辑,要补充“已打开时将窗口前置获焦”的功能,只需要调整窗口实例的获取方式,再对已存在的窗口进行状态恢复和激活操作:

修改后的完整代码:

private void Button_Click(object sender, RoutedEventArgs e)
{
    // 获取已打开的About窗口实例(而非仅判断是否存在)
    var existingWindow = Application.Current.Windows.OfType<About>().FirstOrDefault();
    if (existingWindow == null)
    {
        About p = new About();
        p.Show();
    }
    else
    {
        // 若窗口处于最小化状态,先恢复正常显示
        if (existingWindow.WindowState == WindowState.Minimized)
        {
            existingWindow.WindowState = WindowState.Normal;
        }
        // 激活窗口,将其置于前台并获取焦点
        existingWindow.Activate();
    }
}

关键说明:

  • 用FirstOrDefault()替代Any(),可以直接拿到已打开的About窗口实例,方便后续操作
  • 先判断窗口是否最小化,避免激活后窗口仍停留在任务栏的情况
  • Activate()是WPF窗口的原生方法,会将窗口带到前台并赋予焦点,完全匹配需求

内容的提问来源于stack exchange,提问作者Karls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:47:12