2013-03-31 68 views
0

如何在我的MainWindow前的新窗口中创建进度条?现在,我的prgoressbar将显示。但是,我只是使用.Show()函数,窗口不会显示任何内容;当我使用.ShowDialog()函数时,那么窗口将显示进度条,但它不起作用。我知道Show和ShowDialog之间的区别在于Show将立即返回。我的问题是如何让我的进度条窗口工作?在新窗口中显示进度条

+0

你使窗口在一个新的参考题?您应该能够访问新窗口实例中的控件。 – Jeremy

+0

你能显示一些代码吗? –

+0

'DownloadProgressWindow userControl = new DownloadProgressWindow(cnt_s);'我在我的主窗口中调用我的进度窗口。 – CYB

回答

0

我承担同样的逻辑也适用于WPF

该解决方案基于WinForm

Form1中

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; 
}