进度条不会从一个到另一个表单加载显示

时间:2012-10-01 12:39:31

标签: c#

我在其他表单上有一个主窗体和一个进度条,在主窗体上加载我想加载进度条 在其他形式上说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;
        }  
    }

但是在使用计时器在我的主窗体上调用这些方法时,我无法显示进度条 我还使用了计时器控制和它的tick属性我错过了什么?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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());
    }