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

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

4

2 回答 2

0

要从一个到另一个访问进度条,请尝试以下代码:

frmProgramExport objexport = new frmProgramExport(); // Where frmProgramExport your from name 
objexport.prgImport.PerformStep();
于 2012-10-01T12:46:39.247 回答
0

我认为您希望在活动中同时更新两种表格OnLoad截图

这是第二种形式的代码:

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());
    }
于 2012-10-01T13:43:19.533 回答