2012-10-01 42 views
0

我有一个主窗体和一个进度条在其他窗体上,在主窗体上加载我想加载其他窗体上的进度条 说Comscanner,我写了两个方法下面Comscanner形式:进度条不显示从一个到其他窗体加载

public void SetMaximum(int max) 
    { 
     PrgComPortScan.Maximum = max; 
     PrgComPortScan.Value = 0; 
    } 

    public void Increment() 
    { 
     if(PrgComPortScan.Maximum > (PrgComPortScan.Value + 1)) 
     { 
      PrgComPortScan.Value = PrgComPortScan.Value + 1; 
     } 
    } 

但同时呼吁我的主要形式,这些方法与计时器我不能够显示进度 我还使用定时器控制其蜱财产我这么想吗?

+1

开始您的Increment()可以简单地调用PerformStep()。 –

回答

0

对于访问进度形成一个从另一个尝试下面的代码:

frmProgramExport objexport = new frmProgramExport(); // Where frmProgramExport your from name 
objexport.prgImport.PerformStep(); 
0

我想你想两种形式在同一时间对OnLoad事件更新。 ScrShot

这里是第二个窗体的代码:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 
     Application.DoEvents();    
    } 

    public void SetProgress(int value) 
    { 
     progressBar1.Value=value; 
    } 
    public void SetProgress(int value, int max) 
    { 
     progressBar1.Maximum=max; 
     progressBar1.Value=value;    
    } 
    public void Increment() 
    { 
     progressBar1.PerformStep(); 
    } 
} 

,这里是主窗体的代码:

public partial class MainForm : Form 
{ 
    public MainForm() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 
     this.Show(); 
     label1.Text="Initializing Form1"; 
     Form1 dlg=new Form1(); 
     dlg.Show(); 
     Application.DoEvents(); 
     dlg.Location=new Point(this.Location.X+this.Size.Width+5, this.Location.Y); 
     System.Threading.Thread.Sleep(1400); 

     for(int i=0; i<10; i++) 
     { 
      label1.Text="Setting Progress Bar at "+(i+1).ToString()+" of 10"; 
      dlg.SetProgress(i+1, 10); 
      Application.DoEvents(); 
      System.Threading.Thread.Sleep(1400); 
     } 
     label1.Text="Done!"; 
    } 
} 

,这一切与

static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new MainForm()); 
    }