2014-03-12 32 views
0

我有一個進度條,代碼如下。我從網上找到這個代碼。我真的很想做,當我點擊一個按鈕這個按鈕做一些過程,我數它,我可以理解什麼時候ReadExistingExcel fucnc這裏有任何變化。此功能是其他類,並在此功能中有很多循環的我如何將Winform的進度條更改與其他功能相關聯

public partial class Form1 : Form 
    { 

     public Form1() 
     { 
       InitializeComponent(); 
     } 

     private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
     { 

      Class1 yeni = new Class1(); 
      yeni.Update(); 
     } 

     public void UpdateMyProgressBar(int i) 
     { 
      progressBar1.Value=i; 
      backgroundWorker1.ReportProgress(i); 

     } 



     private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) 
     { 
      progressBar1.Value = e.ProgressPercentage; 
      this.Text = e.ProgressPercentage.ToString(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      backgroundWorker1.RunWorkerAsync(); 
     } 

    } 

其他類

public class Class1 
    { 
     public void Update() 
     { 
      for (int i = 0; i < 100; i++) 
      { 
       Form1 ins = new Form1(); 
       ins.UpdateMyProgressBar(i); 
      } 
     } 
    } 

回答

1

由於您的代碼立即生效,Form1類將創建一個新實例Class1,然後在Update方法內創建100個Form1的新實例。它沒有得到對現有表格的參考。這就是你的問題。

嘗試改變你這樣的Class1代碼:

public class Class1 
{ 
    public Class1(Form1 form1) 
    { 
     _form1 = form1; 
    } 

    private Form1 _form1; 

    public void Update() 
    { 
     for (int i = 0; i < 100; i++) 
     { 
      _form1.UpdateMyProgressBar(i); 
     } 
    } 
} 

然後換Form1這樣的:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
    { 
     Class1 yeni = new Class1(this); 
     yeni.Update(); 
    } 

    public void UpdateMyProgressBar(int i) 
    { 
     backgroundWorker1.ReportProgress(i); 
    } 
0

那麼它聽起來像你只需要有一個公共無效更新進度條值。

public void UpdateProgressBar(int val) 
{ 
    progressBar1.Value = val; 
} 

然後可以通過引用您當前的類從其他類中調用此函數。因此,如果您當前的課程名爲Class1,並且您想從Class10調用它,則只需執行
Class1.UpdateProgressBar(10);

+0

您好我嘗試此解決方案。我從其他類調用UpdateProgressBar方法,並且我看不到progressbar.loops中的任何更改值設置了progressbar值,但它無法工作 – altandogan

+0

我刷新了我的代碼,也許你會發現我的失敗。 – altandogan

相關問題