想点击一个主窗口里的tree node 后, form.Show弹出一个新窗口。(.ShowDialog不能切换,所以不合要求)可是新窗口出现后,由于其他代码的影响,tree node又获得了焦点,新窗口就隐藏在主窗口后面了。
我想到了一个方法,就是在新窗口中设TopMost为true,再加一个timer,过0.5秒后将新窗口的TopMost设为false.这样新窗口一开始的时候在最前面,而且还可以和主窗口切换.
但我的头说,每个新窗口都加个timer很不好,要我想其他方法.请教,我在主窗口中,写什么代码可以代替新窗口中timer的作用?
我想到了一个方法,就是在新窗口中设TopMost为true,再加一个timer,过0.5秒后将新窗口的TopMost设为false.这样新窗口一开始的时候在最前面,而且还可以和主窗口切换.
但我的头说,每个新窗口都加个timer很不好,要我想其他方法.请教,我在主窗口中,写什么代码可以代替新窗口中timer的作用?
然后在这时你再用下面语句设置f为顶窗口
f.TopMost=true;
但是新窗體載入內存(也就是load事件)須要一定的時間,新窗體還沒有打開,這時鼠標又
按到了原有的窗體,所以當新窗體彈出時,就失去焦點,在後面了。這個是操作上的問題,如果要解決也不是沒有辦法不考慮其它方面 ,單純說什麼可以替代timer ? 可以用線程來做。
Thread.sleep(500)的话,只不过停留0.5秒,完了还是要执行主窗口的代码.
再自己挂个事件进去不过最好保存好你的TIMER实例,到时候好关闭掉它.
this.GotFocus += new EventHandler(ImportHelper_FocusChanged);
this.LostFocus+= new EventHandler(ImportHelper_FocusChanged);void ImportHelper_FocusChanged(object sender, EventArgs e)
{
this.TopMost = !this.Focused;
}