Spa*_*rfy 5 c# taskbar winforms
编辑:我不希望它更新,更改或消失.我只希望任务栏达到40%才能启动程序,保持这种状态直到它关闭.
我花了很多时间尝试了许多例子......但没有运气.
为了简单起见,如何在Error颜色中显示40%?
此代码运行但在屏幕上不执行任何操作,没有错误,只需运行:
public TaskbarItemInfo taskBar = new TaskbarItemInfo();
Run Code Online (Sandbox Code Playgroud)
然后在一个方法中:
taskBar.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Error;
taskBar.ProgressValue = 0.40;
Run Code Online (Sandbox Code Playgroud)
如果您在下一行断点并查看,它已设置值,它们只是不在屏幕上执行任何操作...
TaskbarItemInfo
什么都不做.它需要一个在任务栏上显示的窗口.请注意,通常TaskbarItemInfo
从WPF的实例获取实例Window
.即该类旨在用于WPF程序,而不是Winforms.
对于Winforms程序,您可能会发现使用Windows API Codepack更为实际,如果我没记错的话,它会支持这个Shell功能.
您可以使用TaskbarManager
类WindowsAPICodePack.Taskbar
来设置窗体窗口的任务栏进度,如下所示:
using Microsoft.WindowsAPICodePack.Taskbar;
...
private void Form1_Load(object sender, EventArgs e)
{
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Error, Handle);
TaskbarManager.Instance.SetProgressValue(40, 100, Handle);
}
Run Code Online (Sandbox Code Playgroud)
使用当前表单.Handle
告诉经理应该提供此功能的窗口.如果您希望在同一位置处理其进度,也可以使用来自其他表单的公共静态指针引用.
不幸的是,由于某些原因,微软不再为此托管下载,尽管该库仍然具有相关性.但这里有一个StackOverflow Q&A,其中有许多其他链接用于同一个库:Windows API Code Pack:它在哪里?.请注意,有两个版本,1.0和1.1.一般来说,你可能更喜欢1.1版本; 它有许多错误修复,增加的功能,以及更好的Fxcop合规性.我提供的链接是针对1.1的,但也有关于在该SO文章上下载1.0的链接.
这是一个简短的示例,您应该能够使用它来满足您的需求:
System.Windows.Window w = new System.Windows.Window();
w.TaskbarItemInfo = new System.Windows.Shell.TaskbarItemInfo() { ProgressState = System.Windows.Shell.TaskbarItemProgressState.Normal };
w.Loaded += delegate {
Action<Object> callUpdateProgress = (o) => {
w.TaskbarItemInfo.ProgressValue = (double) o;
};
Thread t = new Thread(() => {
for (int i = 1; i <= 10; i++) {
w.Dispatcher.BeginInvoke(callUpdateProgress, 1.0 * i / 10);
Thread.Sleep(1000);
}
});
t.Start();
};
System.Windows.Application app = new System.Windows.Application();
app.Run(w);
Run Code Online (Sandbox Code Playgroud)
要完成上述工作,您需要using System.Threading;
在顶部并添加以下引用:PresentationCore
, PresentationFramework
, SystemXaml
, WindowsBase
。
归档时间: |
|
查看次数: |
12718 次 |
最近记录: |