Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在任务栏中显示隐藏窗口的图标_C#_Wpf_.net 4.0_Window_Taskbar - Fatal编程技术网

C# 在任务栏中显示隐藏窗口的图标

C# 在任务栏中显示隐藏窗口的图标,c#,wpf,.net-4.0,window,taskbar,C#,Wpf,.net 4.0,Window,Taskbar,当我将主窗口的可见性设置为“隐藏”时,任务栏中不会显示任何图标,因此我无法控制窗口以再次显示它。我希望应用程序的图标即使在我隐藏窗口时也可见,并在我单击任务栏上的按钮时显示窗口。(类似于最小化行为) 如何在C#中使用WPF和.NET4.0实现这一点? 编辑:我指的是任务栏中的图标(通常在水平任务栏的左侧和中部),而不是系统托盘中的Notify图标。因此,根据“评论”部分,您要做的是最小化或隐藏窗口,但仍然显示窗口打开的一些窗口或对话框。首先,如果要将窗口保留在任务栏中,应使用以下方法最小化: t

当我将主窗口的可见性设置为“隐藏”时,任务栏中不会显示任何图标,因此我无法控制窗口以再次显示它。我希望应用程序的图标即使在我隐藏窗口时也可见,并在我单击任务栏上的按钮时显示窗口。(类似于最小化行为)
如何在C#中使用WPF和.NET4.0实现这一点?
编辑:我指的是任务栏中的图标(通常在水平任务栏的左侧和中部),而不是系统托盘中的Notify图标。

因此,根据“评论”部分,您要做的是最小化或隐藏窗口,但仍然显示窗口打开的一些窗口或对话框。首先,如果要将窗口保留在任务栏中,应使用以下方法最小化:

this.WindowState = WindowState.Minimized
可以从表单中的任何位置调用。但是,正如您所提到的,这将关闭并隐藏将此窗口设置为父窗口的所有对话。因此,关键是不要将此窗口用作父窗口。假设您的对话继承自表单。您要使用:

newWindow.Show();
我猜您正在调用“ShowDialog”,它将窗口状态绑定到父窗口状态。试试这个,希望它会有帮助

编辑


还有一点需要注意:MessageBox实际上也是如此,但是控制父窗体的方法是使用MessageBox.Show()调用的第一个参数。如果您传入一个表单作为第一个参数,那将是父参数,否则将不会设置父参数。

这两个参数中的任何一个都可能有帮助:或者@sepherm,您是否考虑过简单地使用
this.WindowState=WindowState.Minimized
或者你真的在问任务栏图标吗?@drew_w,我是说任务栏图标,而不是系统任务栏中的Notify图标。@Yuriy我的问题是我无法最小化窗口,因为它的对话框等也将最小化。我只是想将窗口的可见性设置为隐藏,而不是将其最小化。谢谢,但实际上除了对话框之外,我在主窗口中还有AvalonDock的停靠管理器。当用户最小化窗口时,所有浮动面板都将隐藏。因此,我隐藏窗口,而不是实际最小化它,以防止那些浮动应用程序隐藏。有比隐藏窗口更好的方法吗?查看CodePlex上AvalonDock的代码,看起来“FloatingWindow”至少继承了Windows。我的猜测是,如果您查看选项或愿意深入了解一下AvalonDock代码,您将找到一种方法来最小化主窗口,但仍然显示面板(现在可能是它们自己的窗口)。我上面提到的同样原则应该仍然适用。祝你好运尽管有多个补丁与此问题相关,但它们似乎都不适合我。我还是会调查一下,看看能不能想出一个解决办法。所以没有办法直接控制(显示/隐藏)任务栏图标?我知道这篇文章,但找不到任何有用的东西:我并不真正了解任何特定的东西,尽管您可能会以某种方式使用splash表单类型概念。