场景:
在文件上传窗口中,如果上传几千个文件,需要很长时间。我在文件上传窗口中弹出了一个进度条的模态窗口。文件上传完成后,用户才可以有其他操作。问题:
由于长时间的上传文件,用户要求在传文件的时候可以有其他操作。由于其他操作,用户可能会关闭上传文件的窗口。请教方案:
在传文件的时候,用户可以有其他操作,但是如果文件没有上传完,用户不能关闭上传窗口或退出应用程序。请问各位怎么实现。有其他方案更好。 模态窗口可不可以只出现在上传文件的窗口中(只对上传文件窗口有模态效果),其他窗口可以继续使用。如果有,怎么实现?
在文件上传窗口中,如果上传几千个文件,需要很长时间。我在文件上传窗口中弹出了一个进度条的模态窗口。文件上传完成后,用户才可以有其他操作。问题:
由于长时间的上传文件,用户要求在传文件的时候可以有其他操作。由于其他操作,用户可能会关闭上传文件的窗口。请教方案:
在传文件的时候,用户可以有其他操作,但是如果文件没有上传完,用户不能关闭上传窗口或退出应用程序。请问各位怎么实现。有其他方案更好。 模态窗口可不可以只出现在上传文件的窗口中(只对上传文件窗口有模态效果),其他窗口可以继续使用。如果有,怎么实现?
因此,不能够关闭上传窗口。
在上传窗口的Closing事件中提示用户,要用户确定是否真的要关闭。如果不是真要关闭,则e.Cancel = true。
用后台线程BackgroundWorker
private void timer1_Tick(object sender, EventArgs e)
{
if (progressBar1.Value >= 10)
{
timer1.Enabled = false;
this.Close();
}
else
{
progressBar1.Value += 1;
}
}
private void waiting_Load(object sender, EventArgs e)
{
progressBar1.Minimum = 0;
progressBar1.Maximum = 10;
progressBar1.Step = 1;
timer1.Enabled = true;
timer1.Interval = 500;
timer1.Tick += new EventHandler(this.timer1_Tick);
}
在一个FTP文件类中在操作所以FTP的文件管理。1楼的全局变量可以解决。但是显示文件进度的窗口呢?模态用户还是不能有其他操作啊。,
(1)用非模态窗体(this.ShowInTaskbar = true)设计上传监控界面,随时可以切换窗口。
(2)参考3楼代码,设计一个悬浮小窗体,显示上传进度
(3)设计托盘图标(加上菜单)
a.控制悬浮小窗体的显示与否
b.控制上传任务是否中止。
c.切换到工作界面。
(4)主界面用MDI窗体,交互执行其他窗体的任务。如果要求不高,用非模态窗体直接搞定也很好。
可以用BackgroundWorker(线程安全)
或者用Control.BeginInvoke(非线程安全)