[英]Show a progress bar in new window
如何在MainWindow前面的新窗口中创建进度栏? 现在,将显示我的prgoressbar。 但是,我只使用了.Show()函数,该窗口将不显示任何内容。 当我使用.ShowDialog()函数时,该窗口将显示进度条,但将无法使用。 我知道Show和ShowDialog之间的区别是Show将立即返回。 我的问题是如何使进度栏窗口正常工作?
我假设相同的逻辑适用于WPF
解决方案基于WinForm
表格1
private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
// i have used thread pool just to simulate virtual progress from 1 to 100
ThreadPool.QueueUserWorkItem(ShowProgressHandler, form);
form.ShowDialog();
}
private void ShowProgressHandler(object o)
{
Form2 form = o as Form2;
for (int i = 0; i < 100; i++)
{
int i1 = i;
this.Invoke((MethodInvoker) (() => form.OnProgress(i1)));
Thread.Sleep(100);
}
}
表格2
public event Action<int> Progress;
protected internal virtual void OnProgress(int obj)
{
progressBar1.Value = obj;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.