首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从任务栏(WPF)隐藏打开的子窗口?

在WPF中,可以通过设置子窗口的Visibility属性来隐藏打开的子窗口。具体步骤如下:

  1. 在主窗口中,创建一个按钮或其他触发隐藏子窗口的控件。
  2. 在按钮的点击事件或命令中,获取要隐藏的子窗口的实例。
  3. 设置子窗口的Visibility属性为Collapsed,即可隐藏子窗口。

以下是一个示例代码:

代码语言:csharp
复制
// 在主窗口中的按钮点击事件中隐藏子窗口
private void HideChildWindowButton_Click(object sender, RoutedEventArgs e)
{
    // 获取子窗口的实例
    ChildWindow childWindow = Application.Current.Windows.OfType<ChildWindow>().FirstOrDefault();

    if (childWindow != null)
    {
        // 隐藏子窗口
        childWindow.Visibility = Visibility.Collapsed;
    }
}

在上述代码中,我们首先通过Application.Current.Windows.OfType<ChildWindow>().FirstOrDefault()获取子窗口的实例。然后,通过设置子窗口的Visibility属性为Collapsed,即可将子窗口隐藏起来。

隐藏子窗口后,用户将无法看到该子窗口,但子窗口仍然存在于内存中。如果需要再次显示子窗口,只需将Visibility属性设置为Visible即可。

这种方法适用于WPF中的任务栏应用程序,可以实现隐藏打开的子窗口的效果。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • WPF消息机制(二)- WPF内部5个窗口隐藏消息窗口

    目录 WPF消息机制(一)-让应用程序动起来 WPF消息机制(二)-WPF内部5个窗口 (1)隐藏消息窗口 (2)处理激活和关闭消息窗口和系统资源通知窗口 (3)用于用户交互可见窗口 (4)...接下来我会来介绍究竟这5个Win32窗口如何帮助WPF处理消息,我会根据每个窗口创建顺序来介绍。...隐藏消息窗口 创建时机:在Application构造函数调用基类DispatcherObject构造函数时候,会创建一个Dispatcher对象,在Dispatcher私有构造函数当中。...WPF同样面临这样问题,他是如何解决呢?在这里Window 1#起着至关重要作用。通过下面一副图我们来看看Window 1#在做什么事情? ?...而这个过程需要消息不断流动,就必须加入消息队列,最后还要特定窗口过程处理,而核心东西就是这个隐藏Window1#,他在WPF当中只负责处理异步调用,其他消息他不关心,剩余4个窗口在处理。

    1.9K50

    WPF 获取全局所有窗口创建显示事件 监控窗口打开

    本文将告诉大家如何WPF 里面进行全局监控任意窗口创建显示打开,可以获取到每个 WPF 窗口打开时机。...这是一个开发时辅助机制,用来让开发者不要随便弹出窗口,我又好奇这个监控模块是如何监控到我弹出一个窗口,学习了监控模块机制,就写了这个博客 在 WPF 里面,可以通过 EventManager 监听全局路由事件...于是就可以进行监控窗口创建显示 监听窗口 SizeChangedEvent 路由事件是比较靠谱方式,这个有一点点违反开发者想法,开发者默认想是使用 LoadedEvent 事件。...但是在 WPF 里面做了一些性能优化,如果一个窗口没有 XAML 或者是没有任何代码监听了 Loaded 事件,那将不触发 LoadedEvent 路由事件。...也可以在事件里面对每个窗口注入一些有趣逻辑,或者是监听窗口各个事件,输出更多日志,让开发者可以通过日志了解到当前有哪些窗口依然还在显示 这是另一位大佬写代码,请看 https://gist.github.com

    2K50

    解决 WPF 嵌套窗口在改变窗口大小时候闪烁问题

    因为 Win32 窗口句柄是可以跨进程传递,所以可以用来实现跨进程 UI。不过,本文不会谈论跨进程 UI 具体实现,只会提及其实现中一个重要缓解,使用窗口方式。...你有可能在使用窗口之后,发现拖拽改变窗口大小时候,窗口内容不断闪烁。如果你也遇到了这样问题,那么正好可以阅读本文来解决。...---- 问题 你可以看一下下面的这张动图,感受一下窗口闪烁: 实际上在拖动窗口时候,是一直都在闪,只是每次闪烁都非常快,截取 gif 时候截不到。...protected override void DestroyWindowCore(HandleRef hwnd) { } } 原因 正在探索…… ---- 参考资料 wpf...drawn window frame flickers on resizing if the window contains a HwndHost element - Stack Overflow WPF

    68740

    WPF Dispatcher 为什么要创建一个隐藏窗口

    在深入了解 WPF Dispatcher 工作原理(Invoke/InvokeAsync 部分)中,我提到 Dispatcher 在构造函数中创建了一个隐藏窗口专门用来接收消息,以处理通过 Invoke...然而 C 不满足于只看到这个结论,他更期望知道为什么 WPF 一定要创建这个隐藏窗口。其实对这个问题我也不知道答案,但在和他深入探讨以及不断寻找资料过程中,我们逐渐得知了缘由。...既然 WPF 框架已经处理了这件琐事,那就意味着同在框架内 Invoke 那些操作也能放到这里一并处理了,并不需要创建一个隐藏消息窗口(Hidden Message-Only Window)来绕着圈子处理...虽然不能正面证明前面 WPF 创建隐藏消息窗口必要性,但可以知道这至少是一个常用做法。既然常用,那一定有其存在必要性。...综上所述,WPF 在 Dispatcher 机制里创建隐藏消息窗口,其目的就是为了解决消息循环嵌套问题,只要所有实现了消息循环开发者能记得调用 DispatchMessage 函数,Dispatcher

    27020

    WPF窗口激活作为前台最上层窗口方法

    WPF 中,如果想要使用代码控制,让某个窗口作为当前用户输入逻辑焦点窗口,也就是在当前用户活动窗口最上层窗口,默认使用 Activate 方法,通过这个方法在大部分设备都可以做到激活窗口...但是在一些特殊设备上,使用下面代码调起窗口只是在任务栏闪烁图标,而没有让窗口放在最上层 window.Show(); window.Activate(); 在大部分设备上,通过 Show 和 Activate...组合可以让窗口作为当前用户活动,即使窗口之前是最小化或隐藏,都可以通过 Show 方法显示 但是某些设备窗口被盖在其他窗口下面,此时窗口 window.IsActive 还是 true 但是调用...Topmost 属性,同时设置顺序需要做一点小更改 在 WPF 中通过 c# - Bring a window to the front in WPF - Stack Overflow 可以了解到如何用...3.显示窗口ShowWindow(有些窗口被最小化/隐藏了)     4.更改窗口Zorder,SetWindowPos使之最上,为了不影响后续窗口Zorder,改完之后,

    3.2K11

    WPF 在 Alt+Tab 隐藏窗口

    但是这样会在 切换窗口看到这个窗口,所以我找到了一个方法来让 WPF 窗口不在切换窗口显示。...现在 WPF 程序只要设置了不在任务栏显示,而且设置窗口Visibility="Hidden"就可以不在切换窗口显示窗口。...设置方法可以是在 xaml 添加下面代码 ShowInTaskbar="False" Visibility="Hidden" 但是如大家见到,如果存在 BitmapCache 和 一个隐藏窗口,那么就会在锁屏之后软件无法渲染...实际上在切换窗口不显示窗口要求窗口是:WS_EX_TOOLWINDOW 或其他窗口窗口,但是可以看到 Toast 不是其他窗口窗口,所以只能设置窗口。...InitializeComponent(); Loaded += ToastWindow_Loaded; } 然后在 Load 里面使用隐藏窗口代码

    3.1K30

    如何打开sln文件并显示窗口_在本机打开别人sln文件

    大家好,又见面了,我是你们朋友全栈君。 sln:在开发环境中使用解决方案文件。它将一个或多个项目的所有元素组织到单个解决方案中。...去看了看他博客,言及两年来如何如何,及参加会议云云,想想自己现在连.NET里SQL连接都看不懂了,和当时感觉差太远了,我曾经有过梦想么?我还去追寻过?...本来对自己没信心,所以如何打开别人SLN文件,只是自己猜测要改改他配置,用UE打开后,修改了一通路径,居然不行,很是郁闷,无奈上网搜索,发现别人也是这么说:....“net是把你机器作为服务器来写asp.net程序 。 生成新项目时,他自动给你设置,但如果用不是这台机器上生成项目,就得手工设置了!”呵呵,没想到自己想法是对,可是我改错了么?...你满意现在生活吗?为什么不正视你困难和你责任?一味逃避最终结果会是什么呢?”

    3K60

    使用 SetParent 制作父子窗口时候,如何设置窗口窗口样式以避免抢走父窗口焦点

    不过,对于 WPF 程序来说,一个独立窗口实际上只有一个窗口句柄,窗口所有内容都是 WPF 绘制。...如果你不熟悉 Win32 窗口父子窗口关系和窗口样式,那么很有可能遇到父子窗口之间“抢夺焦点”问题,本文介绍如何解决这样问题。...注意看下面的窗口标题栏,当我在这些不同区域间点击时候,窗口标题栏在黑色和灰色之间切换: 这说明当窗口获得焦点时候,父窗口会失去焦点并显示失去焦点样式。...你可以在这篇博客中找到一个简单例子: 解决办法 而原因和解决方法仅有一个,就是窗口需要有一个窗口样式。 具体来说,窗口必须要有 WS_CHILD 样式。...你可以看看 Spyxx.exe 抓出来默认普通窗口窗口样式差别: !

    49860

    直击本质:WPF 框架是如何实现模态窗口

    想知道你在 WPF 编写 Window.ShowDialog() 之后,WPF 框架是如何帮你实现模态窗口吗? 本文就带你来了解这一些。...---- Window.ShowDialog WPF 显示模态窗口方法就是 Window.ShowDialog,因此我们直接进入这个方法查看。...由于 .NET Core 版本 WPF 已经开源,我们会使用 .NET Core 版本 WPF 源代码。...不要紧,我再简化一下: EnumThreadWindows 获取当前线程所有窗口 把当前线程中所有窗口都禁用掉(用是 Win32 API 禁用哦,这不会导致窗口内控件样式变为禁用状态) 将窗口显示出来...(如果出现异常,则还原之前禁用窗口) 可以注意到禁用掉窗口是“当前线程”哦。

    57430

    如何监视 WPF所有窗口,在所有窗口中订阅事件或者附加 UI

    由于 WPF 路由事件(主要是隧道和冒泡)存在,我们很容易能够通过只监听窗口某些事件使得整个窗口中所有控件发生事件都被监听到。然而,如果我们希望监听是整个应用程序中所有的事件呢?...路由事件路由可并不会跨越窗口边界呀? 本文将介绍我编写应用程序窗口监视器,来监听整个应用程序中所有窗口路由事件。这样方法可以用来无时无刻监视 WPF 程序各种状态。...这种操作意味着将来新打开窗口是不会被监听到事件。 我们有没有方法拿到新窗口显示事件呢?遗憾是——并不行。 但是,我们有一些变相处理思路。...于是,一开始时候,我们可以监听一些窗口激活事件。如果执行这段初始化代码时候没有任何窗口是激活状态,那么就监听所有窗口激活事件;如果有一个窗口是激活,那么就监听这个窗口取消激活事件。...本文会经常更新,请阅读原文: https://blog.walterlv.com/post/how-to-monitor-all-windows-of-wpf-application.html ,以避免陈旧错误知识误导

    51140

    【炫丽】0开始做一个WPF+Blazor对话小程序

    大家好,我是沙漠尽头狼。.NET是免费,跨平台,开源,用于构建所有应用开发人员平台。本文演示如何WPF中使用Blazor开发漂亮UI,为客户端开发注入新活力。...WPF默认程序本文创建WPF Hello World开发:使用WPF模板创建一个默认程序,取名【WPFBlazorChat】,项目组织结构如下:运行项目,一个空白窗口:接着往下看,我们添加Blazor...消息,打开窗体B;打开窗体B后,再点击主窗体A【桃心】按钮,发送了SendRandomDataMessage消息,窗体B第二个TabItem Header显示了消息传来数字;点击窗体B【...:public partial class App : Application{ public App() { // 订阅打开窗口消息,在主窗口点击【+】按钮...,前面部分文章已经发过,再发一次,哈哈:用户列表窗口打开窗口聊天窗口演示发送消息7.

    8.1K60

    【炫丽】0开始做一个WPF+Blazor对话小程序

    大家好,我是沙漠尽头狼。 .NET是免费,跨平台,开源,用于构建所有应用开发人员平台。 本文演示如何WPF[1]中使用Blazor[2]开发漂亮UI,为客户端开发注入新活力。...WPF默认程序 本文创建WPF Hello World开发: 使用WPF模板创建一个默认程序,取名【WPFBlazorChat】,项目组织结构如下: 空白WPF项目 运行项目,一个空白窗口WPF...OpenSecondViewMessage消息,打开窗体B; 打开窗体B后,再点击主窗体A【桃心】按钮,发送了SendRandomDataMessage消息,窗体B第二个TabItem Header...: public partial class App : Application { public App() { // 订阅打开窗口消息,在主窗口点击【+】按钮...代码结构 下面是最后示例效果图,前面部分文章已经发过,再发一次,哈哈: 用户列表窗口 用户列表 打开窗口 打开窗口 聊天窗口 聊天窗口 演示发送消息 7.

    10.3K20

    Windows 对全屏应用优化

    本文主要告诉大家微软官方文档以及考古了解到 Windows 对全屏应用优化,以及是如何进行优化,方便小伙伴在撕时候可以找到根据 当然,很多小伙伴只是需要依据,所以我就先贴出一篇特别好官方文档...这个拦截会出现比较多性能问题和不稳定问题 全屏独占窗口对于多个屏幕设备不够友好,如果使用 DWM 管理另一个屏幕,那么当另一个屏幕应用获取焦点又需要如何处理。...更多关于 WPF 优化请看 DX 层面讲 WPF 渲染卡顿 注:有小伙伴对于独占全屏应用多屏幕处理觉得有点迷,我换句话告诉大家,请打开一个 UWP 视频应用,让他进入全屏。...,要求你应用需要覆盖屏幕每一个像素才会隐藏任务栏。...在一些有趣设备上,不会给无边框全屏应用设置前台焦点,因为窗口没有焦点所以此时任务栏依然可以显示,解决方法请看 WPF窗口激活作为前台最上层窗口方法 更多博客 Windows桌面实现之七(DirectX

    1.9K20

    一点点坑里爬出来:如何正确打开 WPF Popup?

    WPF打开一个 Popup 并没有想象当中容易。虽说提供了一个 IsOpen 属性用于显示 Popup,但实际上造成 Bug 会让你解得死去活来。...Win32 WS_POPUP 也坑,不过 WPF 会额外再带来一些,所以本文只说 WPF。...然而如果你是在任何控件 MouseUp 事件中打开,那么 Popup 就不会获得焦点。既然不会获得焦点,那么也就不存在失焦问题。...无论你在后面如何写让 Popup 以及内部控件获得焦点代码,实际上这种情况下弹出 Popup 不会真正获得焦点,除非手动点击。...WPF 版本设置焦点,无论是逻辑焦点(xx.Focus())还是键盘焦点(Keyboard.Focus(xx))都无法真正让 Popup 获得焦点。这时打字,IME 框是不会跟随文本框

    56130

    WPF 两个 Topmost 窗口如何设置谁在最上方

    我需要有两个层级最高窗口,但是要求某个窗口在另一个上方,同时这两个窗口在所有其他应用程序窗口上方 需要用到 SetWindowLong win32 方法设置,假设我有 A 和 B 两个窗口...,我需要让这两个窗口都是 Topmost 同时 A 在 B 上方 大概逻辑如下 B.Loaded += (sender, args) => {...Loaded 之后,原因是为了窗口实际创建出来,拿到句柄 为什么还需要做延迟一拍设置,因为立刻设置可能和控件初始化冲突,如 Popup 刚好弹出,将不会收起。...注意这是在一个特别复杂项目里面才发现这个坑,我创建空白项目没有发现这个坑 这里 SetWindowLongPtr 是 SetWindowLong 方法,只是封装了 x86 和 x64 代码 关于...WPF 设置 Owner 几乎等价,只是这个 win32 方法可以在复杂项目也设置上去

    86940
    领券