我在其他表单上有一个主窗体和一个进度条,在主窗体上加载我想加载进度条 在其他形式上说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属性我错过了什么?
答案 0 :(得分:0)
对于访问进度条从一个到另一个尝试下面的代码:
frmProgramExport objexport = new frmProgramExport(); // Where frmProgramExport your from name
objexport.prgImport.PerformStep();
答案 1 :(得分: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());
}