日期:2014-05-19  浏览次数:20769 次

难道是 NET 2.0 的一个 bug?
我有一个窗口,需要要定时显示。于是我设计了一个定时器,让它定时引发一个事件,然后该事件调用显示窗口的方法显示窗口。当方法是用ShowDiaolg()时,窗口可以正常显示,但这样一来该窗口会挡住其它窗口,所以只能用Show()方法。但当用Show()方法时,窗口在显示的时候有些控件不能显示出来,而且点击该窗口时,也会出现“窗口没有响应”的提示,不知各位朋友是否可帮分析一下原因?

------解决方案--------------------
当你在Timer显示一个窗体的时候,相当于从不是建立窗体的线程中访问这个窗体,这是不允许的,你换个思路,或调用窗体的Invoke方法.
------解决方案--------------------
这就好像是谁家的孩子谁来管一样,别家的人不能管自己的孩子,这是不合适的.
------解决方案--------------------
对, 用异步调用

------解决方案--------------------
用 System.Windows.Forms.Timer

private void button1_Click(object sender, EventArgs e)
{
timer1.Tick += new EventHandler(TimerMethod);
timer1.Interval = 5000;
timer1.Start ();
}

public void TimerMethod(Object sender,EventArgs e) // 该方法显示提示时间到窗口(Form2)
{
timer1.Stop();
Form2 form2_1 = new Form2();
form2_1.Show(); // Form2上只有一个“关闭 "该窗口用的控件

}