假设一个应用程序中有多个窗口,并且所有窗口都设置为显示在任务栏中。将鼠标悬停在应用程序的图标上会产生一组缩略图,每个窗口一个缩略图。如果有足够的窗口,Windows 7 会按名称将其切换到一个高大的、可滚动的窗口列表。
我想以编程方式重新排序这个"缩略图"列表,因为有一个特定的窗口我想成为列表顶部的第二个。我该怎么做?
请注意,我无法更改窗口的创建顺序(这将是一种解决方案,但不幸的是,我不能利用(。
好吧,事实证明这很简单,我错了。
您需要做的就是将要重新排序的所有Window
对象设置为 ShowInTaskbar
false
。然后将其设置回 true
,按照您希望窗口出现的确切顺序。无需重新创建 Window
对象。
就我而言,在重新排序期间,窗口闪烁了一次。这可能与我当前的 GFX 驱动程序有关。
注:已测试并适用于 Windows 7 和 Windows 10。
例:
using System.Windows;
namespace WpfApp1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
Window winA = new Window();
Window winB = new Window();
Window winC = new Window();
public MainWindow()
{
InitializeComponent();
winA.Title = "A";
winB.Title = "B";
winC.Title = "C";
winB.Show();
winA.Show();
winC.Show();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
winB.ShowInTaskbar = false;
winA.ShowInTaskbar = false;
winC.ShowInTaskbar = false;
winA.ShowInTaskbar = true;
winB.ShowInTaskbar = true;
winC.ShowInTaskbar = true;
}
}
}