我的表单和商务舱遇到了一些问题:
在业务类完成工作之前,表单才会打开。每次我在Main()
中调用Form1时,Form1都会调用两个方法:
InitializeComponents();
testConnection();
testConnection
调用业务类,并根据业务类的属性设置Form的属性。像那样:
Pingger pingger = new Pingger();
ipLabel.Text = pingger.getLocalIP();
我不做这些操作,我也做其他人喜欢ping的结果。但是,Form1需要很长时间才能打开,而当它打开时Form1会显示结果。我该怎么做,创建Form1,打开它,然后在3秒后开始处理业务类?
答案 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();