程序在最小化后不会从任务栏中检索
本文关键字:任务栏 检索 最小化 程序 | 更新日期: 2023-09-27 18:37:22
我将提供一些关于我正在尝试做的事情的背景:
我创建了一个自定义按钮,该按钮应该通过淡出动画最小化我的窗口,因此这是它的代码:
private void minimize_Window(object sender, EventArgs e)
{
var anim = new DoubleAnimation(0, (Duration)TimeSpan.FromSeconds(1));
anim.Completed += (s, _) => this.Minimize();
this.BeginAnimation(UIElement.OpacityProperty, anim);
}
private void Minimize()
{
WindowState = WindowState.Minimized;
}
它工作得很好,尽管问题是当我尝试从任务栏中检索我的程序时,它不会做任何事情(当我在最小化后从任务栏中单击它时,我无法看到该程序)。我从中了解到,我的程序的不透明度被设置为0,同时它被最小化(因为动画)。所以我使用了调用该方法的 Activated 事件:
private void set_Opacity(object sender, EventArgs e)
{
rectangle2.Opacity = 1;
WindowState = WindowState.Normal;
}
而且,同样的问题。希望你能帮到忙。
谢谢。如果需要任何其他解释,请告诉我。
尝试使用其他动画将不透明度设置回 1:
private void set_Opacity(object sender, EventArgs e)
{
var anim = new DoubleAnimation(1, (Duration)TimeSpan.FromSeconds(0));
this.BeginAnimation(UIElement.OpacityProperty, anim);
}
编辑:此方法有效且简单地将不透明度设置为 1 的原因是由于依赖项属性值设置优先级。 简而言之,动画设置的值优先于设置的"本地"值,即通过分配给属性设置的值。
在您的情况下,动画已完成,但它仍然"保留"Opacity
依赖项属性。 但是,如果您使用
anim.FillBehavior = FillBehavior.Stop;
然后,动画将在完成后"释放"Opacity
属性,然后您不需要另一个动画将其设置回 1。 然后,您的原始set_Opacity
方法应该可以工作。
另请注意,不应在 set_Opacity
方法中分配WindowState = WindowState.Normal
。 如果最大化窗口,请单击按钮将其最小化,然后单击任务栏按钮,窗口不会重新最大化。