我正在通过 c# winforms 开发一个项目。我在表单之间导航时遇到问题。
我正在使用经典的表单导航。
当我单击主表单上的按钮时,将打开一个新表单,上面有很多项目。
这是我使用的代码。
frmMuayAnaEkran frm = new frmMuayAnaEkran();
frm.ShowDialog();
所以问题是表单创建太慢了。真的,打开需要 8-10 秒。我该如何解决这个问题?这是我要打开的表单屏幕:http: //j.mp/VRMyby
我正在通过 c# winforms 开发一个项目。我在表单之间导航时遇到问题。
我正在使用经典的表单导航。
当我单击主表单上的按钮时,将打开一个新表单,上面有很多项目。
这是我使用的代码。
frmMuayAnaEkran frm = new frmMuayAnaEkran();
frm.ShowDialog();
所以问题是表单创建太慢了。真的,打开需要 8-10 秒。我该如何解决这个问题?这是我要打开的表单屏幕:http: //j.mp/VRMyby
我想问题出在您在表单构造函数或 FormCreated 事件中执行一些昂贵的操作。也许您正在查询数据库或一些远程服务。您可能会考虑以下几点:
假设您在表单加载时有以下事情要做:
void LoadStartupItemsAndDataBlahBlah(object sender, DoWorkEventArgs e)
{
int s = 0;
for (int i = 0; i < 1000; i++)
for (int j = 0; j < 1000; j++)
for (int k = 0; k < 1000; k++)
s++;
MessageBox.Show(s.ToString());
}
如果您在表单加载中调用此方法
private void Form5_Load(object sender, EventArgs e)
{
Stopwatch t = new Stopwatch();
t.Start();
LoadStartupItemsAndDataBlahBlah(null,null);
t.Stop();
this.Text = string.Format("[{0}] mili-seconds", t.ElapsedMilliseconds);
}
您的表单在大约 5 秒(5000 毫秒)后运行,并显示一个消息框1000000000
但是如果你在后台运行该方法
private void Form5_Load(object sender, EventArgs e)
{
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(LoadStartupItemsAndDataBlahBlah);
Stopwatch t = new Stopwatch();
t.Start();
bg.RunWorkerAsync();
t.Stop();
this.Text = string.Format("[{0}] mili-seconds", t.ElapsedMilliseconds);
}
您的表单在大约 0-1 毫秒内加载得非常快,并且在 5 秒内消息框将到达并显示它的值1000000000