我正在通过c#winforms开发一个项目。 导航到表单之间我遇到了问题。
我正在使用经典的表单导航。
当我点击主表单上的一个按钮时,会打开一个新表单,上面有很多项目。
这是我使用的代码。
frmMuayAnaEkran frm = new frmMuayAnaEkran();
frm.ShowDialog();
问题是表单创建太慢了。真的,打开需要8-10秒。 我该如何解决这个问题? 这是表单屏幕,我想打开它:http://j.mp/VRMyby
答案 0 :(得分:4)
我想这个问题来自于你在表单构造函数内部或FormCreated事件中执行一些昂贵的操作。也许您正在查询数据库或某些远程服务。您可以考虑以下几点:
答案 1 :(得分:1)
假设您在表单加载方面有以下事项:
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