我正在使用Visual Studio(c#)开发一个项目。当我使用进度条安装我的应用程序时,我想创建一个启动表单。完成进度条后,应隐藏此表单并打开新表单。你可以帮我解决这个问题吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
int d;
for (d = 0; d <= 100; d++)
progressBar1.Value = d;
this.Hide();
Form1().Show();
timer1.Enabled = false;
}
}
}
答案 2 :(得分:0)
编辑:
我刚刚制作了一个示例应用程序,试图使用您指定的代码。除了一个调整之外,它工作正常:
Form1().Show();
应为new Form1().Show();
此代码无法执行的唯一方法是,如果您忘记在设计视图中将timer1
设置为enabled
状态,导致代码永远不会启动。
您确定代码正在启动吗?你在这段代码上做了一个断点吗?
旁注: timer1不在单独的线程上,因此您不需要使用Invoke(您可以通过查看控件的InvokeRequired
属性来查看是否确实需要它)
建议的改进:如果您不打算再次使用Form2并根据您的代码判断,很可能您不会;也许你应该在Form2而不是Close()
上调用Hide()
并释放资源。我有时候我的应用程序一直在后台运行,因为我隐藏了表单但从未关闭它,应用程序在“最后一个窗口关闭时退出”,从未发生过。
所以可以肯定的是,这是在我的机器上运行的最终代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
//enable timer1 here or in designer
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
//disable timer1 first thing, otherwise it can end up ticking
//multiple times before you've had a chance to disable it
//if the timespan is really short
timer1.Enabled = false;
int d;
for (d = 0; d <= 100; d++)
progressBar1.Value = d;
Hide();
//create a new Form1 and then show it
new Form1().Show();
}
}
}