我的主窗体中有一些代码,一旦项目启动就会加载另一个窗体:
private void Form1_Load(object sender, EventArgs e)
{
Updating upd = new Updating();
upd.Show();
}
这个新表单(目前)只包含以下代码:
private void Updating_Load(object sender, EventArgs e)
{
this.BackgroundImage = Properties.Resources.updating1;
Stopwatch dw = new Stopwatch();
dw.Start();
bool qsdf = true;
while (qsdf)
{
if (dw.ElapsedMilliseconds >= 3000) qsdf = false; dw.Stop();
}
this.BackgroundImage = Properties.Resources.updating2;
Stopwatch sw = new Stopwatch();
sw.Start();
qsdf = true;
while (qsdf)
{
if (sw.ElapsedMilliseconds >= 3000) qsdf = false; sw.Stop();
}
this.Close();
现在,由于某种原因,被调用的表单(称为Updating
的表单)根本没有显示。目前所发生的一切是在我得到我的主要表单之前,我在6秒内没有得到任何东西(如秒表所示),甚至没有看到更新表格。
注意:这是我的Updating.Designer.cs中的代码,它绘制了所有组件:
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = global::BossCraftLauncher.Properties.Resources.updating1;
this.ClientSize = new System.Drawing.Size(300, 100);
this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Updating";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "BCL Update";
this.Load += new System.EventHandler(this.Updating_Load);
this.ResumeLayout(false);
答案 0 :(得分:1)
您的循环阻止了UI线程。当load事件触发时..你的循环阻止它继续它的消息队列。
最简单的选择(当您使用WinForms时)是使用Timer
控件并将代码放入Tick
事件中。
答案 1 :(得分:0)
为什么要关闭updated_Load上的更新表单? “this.Close();” 如果在formload中编写close()函数,则在加载屏幕后,表单将被关闭。