DirectoryInfo dirInfo = new DirectoryInfo(strSource);
FileInfo[] files = dirInfo.GetFiles();
pgb.Maximum = files.Length-1;
Thread thread = new Thread(new ThreadStart(() =>
{
for (int n = 0; n < files.Length; n++)
{
FileInfo tempfile = files[n];
string path = System.IO.Path.Combine(strDestination, tempfile.Name);
tempfile.CopyTo(path, true);
pgb.Dispatcher.BeginInvoke(new Action<int>((x) => pgb.Value = x),
DispatcherPriority.Background, n);
}
}));
thread.Start();
我想在进度条的标签上显示复制文件的百分比,其中:
percent = n / pgb.Maximum
任何人都可以帮我吗?谢谢!
答案 0 :(得分:1)
有多种方法可以做到这一点。
最简单的方法是创建UserControl
,并展示其中的各种属性以显示您的消息,设置ProgressBar
的值:
<UserControl ...>
<Grid>
<ProgressBar x:Name="PbControl"/>
<TextBlock x:Name="TbMessage" Text="... messages goes here ..." HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</UserControl>
在UserControl
代码后面,
public ProgressBar ProgressBarControl { get { return PbControl; } }
string _message;
public string Message
{
get { return _message; }
set { _message = value; TbMessage.Text = _message; }
}
只需设置Message
的{{1}}属性。
另一种选择是通过继承Window
来创建新的Control
,并更改其ProgressBar
,我认为这可以更加自定义Template
,但需要还有更多工作要做。
然后,无论您需要从另一个线程设置消息,请执行以下操作:
Message