我正在尝试演示WPF中的文件传输,以便它实时刷新屏幕并显示当前数据。我的要求是它应该显示正在传输的当前文件。这是我写的代码。
public MainWindow()
{
InitializeComponent();
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += tick_event;
timer.Start();
}
private void tick_event(object sender, EventArgs e)
{
for (int i = 0; i < 60; i++)
{
txtName.Text = "Transfering file no. "+i.ToString();
}
}
我所尝试的是,例如有60个文件,屏幕显示正在传输哪个文件。但是,当我运行这段代码时,它只显示最后一个文件,也就是第59个文件。我可以做些什么改变来实现这个目标?提前谢谢。
当你说
它只显示最后一个文件,也就是第59个文件
这是因为当事件触发时,它从0到59计数,并将这些数字毫不延迟地写入txtName
。顺序是,您只能看到最近写的数字。
你应该设置一个计数器,并且在计时器事件中只写计数器变量。
DispatcherTimer timer = new DispatcherTimer();
private int filesCopied = 0;
public MainWindow()
{
InitializeComponent();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += tick_event;
timer.Start();
}
private void tick_event(object sender, EventArgs e)
{
filesCopied++;
txtName.Text = "Transfering file no. " + filesCopied.ToString();
if (filesCopied >= 60) timer.Stop();
}