原文地址:
http://www.84ren.com/read.php?tid-31409.html大家好 我是GIS理想 當(dāng)我們做C#開(kāi)發(fā)的時(shí)候 也就是說(shuō)只要是應(yīng)用程序開(kāi)發(fā)的時(shí)候 有一個(gè)問(wèn)題是要經(jīng)常遇到的 就是當(dāng)我們點(diǎn)擊打開(kāi)新窗口的問(wèn)題 如何判斷窗口已經(jīng)打開(kāi)了 因?yàn)槿绻蛔雠袛嗟脑?明顯會(huì)出現(xiàn)問(wèn)題 :每點(diǎn)擊一次 就會(huì)加載一個(gè)相同的窗口 這個(gè)是不對(duì)的
一般我們打開(kāi)一個(gè)新窗口是這樣的:
Private void button_Click(object sender,EventArgs e)
{
Frm frm=new Frm();
Frm.show();
}
這個(gè)是經(jīng)常要用到的 呵呵 尤其是我這樣的新手 。。。。。。
很明顯 這樣每點(diǎn)擊一次 都會(huì)出來(lái)一個(gè)新的Frm窗體的 那么怎么判斷當(dāng)前的窗體已經(jīng)加載呢
方法一 用window api(沒(méi)用這里過(guò) 不敢妄言)
方法二 先實(shí)例化一個(gè)窗體,然后在點(diǎn)擊事件里讓它顯示 如下:
Frm frm= new Frm();
private void pictureBox2_Click(object sender, EventArgs e)
{
if (!frm.Created)
{
f = new Frm();
f.Show();
}
}
很明顯 這個(gè)貌似能實(shí)現(xiàn)只出來(lái)一次 但是隨之而來(lái)的問(wèn)題是 事先就實(shí)例化了這個(gè)窗體 這在代碼編寫里是不好的習(xí)慣
要是有很多的窗體的話 加載程序的時(shí)候就很占系統(tǒng)資源了 所以這樣的寫法也不可取
方法三 聲明一個(gè)窗體變量 然后動(dòng)態(tài)的創(chuàng)建并顯示
其實(shí)這個(gè)方法來(lái)自于第二個(gè)方法的思路 認(rèn)真分析一下第二個(gè)方法可以看到 之所以不可取是因?yàn)樵诼暶鞯臅r(shí)候直接實(shí)例化了 那么我們不實(shí)例化它 只聲明一個(gè)窗體變量 不就行了么?
是的 例子代碼如下:
//這句放在窗體的初始化的地方 不是點(diǎn)擊事件里最佳a(bǔ)ddPlaceMark是窗體的name
private addPlaceMark addplacemark;
//下面的放在彈出窗體的點(diǎn)擊事件里即可
if (addplacemark == null || addplacemark.IsDisposed)
{
addplacemark = new addPlaceMark();
addplacemark.Show();
}
else
{
addplacemark.WindowState = FormWindowState.Normal;
addplacemark.Activate();
addplacemark.Show();
}
這樣就可以了 效果很好 呵呵
好了 總結(jié)完畢 擱筆收工
ps:
應(yīng)用程序啟動(dòng)與關(guān)閉事件 Form 和 Control 類和應(yīng)用程序啟動(dòng)與關(guān)閉有關(guān)的時(shí)間。
當(dāng) Windows Form 應(yīng)用程序啟動(dòng)時(shí),會(huì)以下列順序引發(fā)主要表單的啟動(dòng)事件:
System.Windows.Forms.Control.HandleCreated
System.Windows.Forms.Control.BindingContextChanged
System.Windows.Forms.Form.Load
System.Windows.Forms.Control.VisibleChanged
System.Windows.Forms.Form.Activated
System.Windows.Forms.Form.Shown
當(dāng)應(yīng)用程序關(guān)閉時(shí),會(huì)以下列順序引發(fā)主要表單的關(guān)閉事件:
System.Windows.Forms.Form.Closing
System.Windows.Forms.Form.FormClosing
System.Windows.Forms.Form.Closed
System.Windows.Forms.Form.FormClosed
System.Windows.Forms.Form.Deactivate
posted on 2010-08-29 22:46
漂漂 閱讀(3495)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
c#開(kāi)發(fā)