如何确定表单已在C#中完成打开

时间:2014-01-22 18:42:09

标签: c# .net forms

我的表单和商务舱遇到了一些问题:

在业务类完成工作之前,表单才会打开。每次我在Main()中调用Form1时,Form1都会调用两个方法:

InitializeComponents();
testConnection();

testConnection调用业务类,并根据业务类的属性设置Form的属性。像那样:

Pingger pingger = new Pingger();
ipLabel.Text = pingger.getLocalIP();

我不做这些操作,我也做其他人喜欢ping的结果。但是,Form1需要很长时间才能打开,而当它打开时Form1会显示结果。我该怎么做,创建Form1,打开它,然后在3秒后开始处理业务类?

4 个答案:

答案 0 :(得分:3)

您想要的是由表单控件引发的事件。要确定是否存在此类事件,您只需Google上课(即Form)。在msdn页面上列出了每个属性,方法和事件以及它们的作用。

你想要的是Shown事件。您可以向此添加事件,然后处理您想要执行的任何操作。见下面的链接。

http://msdn.microsoft.com/en-us/library/system.windows.forms.form(v=vs.110).aspx

答案 1 :(得分:3)

您可以订阅表单的Shown事件,然后从那里调用testConnection()方法。

InitializeComponents();
Shown += (s,e) => testConnection();

答案 2 :(得分:2)

您还可以使用多线程来“启动”testConnection()方法。 (但是在你依赖它们,线程安全等之前,你有更复杂的确保结果存在...)

答案 3 :(得分:1)

我想你想在连接测试之前显示表单吗?

这个想法可能是像Wonderbird建议一样使用多线程,使用类似的东西:

    InitializeComponent();
    new Thread(testConnection).Start();