製作登入窗體:
製作乙個登陸窗體,實現點選按鈕關閉此窗體並開啟另乙個窗體
直接在按鈕點選事件中,例項化乙個想要開啟的窗體 使用show方法開啟,並把登陸窗體的visible屬性改為false
form1 f1 = new form1();另:這樣寫的話再關閉第二個視窗的時候,程式並沒有完全結束,第乙個登陸視窗仍然存在,雖然不顯示f1.show();
this.visible = false;
因此我們用到建構函式傳值,並且這樣可以實現開啟唯一視窗(不重複開啟同乙個視窗)
建構函式傳值:
建構函式可以設定引數,當例項化這個窗體時,可以把某個我們需要的型別的引數傳遞進來,比如要點選登入時,將乙個user自定義物件以及登入窗體本身傳遞給將要開啟的窗體
form2 f2 = null;由於作用域問題,傳遞進來的引數只能在建構函式中使用,可在外面設定乙個全域性變數,在建構函式中把傳遞進來的值賦給全域性變數,這樣在本程式中其他事件可以隨意呼叫,如上public form1(form2 f2, users u)
因為form1不是主窗體 所以關閉form1時並不會結束程式,我們只需要寫乙個關閉form1時觸發的事件即可(formclosing或formclosed):
private void form1_formclosing(object sender, formclosingeventargs e)此時使用到了上面傳遞進來的f2,通過賦值給全域性變數f2從而控制了form2的關閉。
開啟唯一窗體:
如果多次點選同乙個登陸按鈕,開啟了多個登陸後的窗體,這樣是不合理的
同樣可以通過建構函式傳值來控制,在主窗體中建立乙個list公共集合
public partial class form1 : form那麼,當form2關閉的時候,設定關閉事件,將from2自己從集合中刪掉public listflist = new list();
private void button1_click(object sender, eventargs e)
}if (count == 0)//如果集合中沒有form1窗體 則開啟它}}
public partial class form2 : form這樣,就實現了當form2處於沒開啟的狀態時,點選按鈕將form2開啟,否則不執行任何操作,並且當form2關閉時,刪掉集合中的form2,這樣再次點選按鈕的時候可以重新開啟form2private void form2_formclosing(object sender, formclosingeventargs e)
}
最後:點選按鈕,如果想要開啟的視窗已經開啟,則讓其焦點進入:可通過獲取視窗使用focus()方法實現
開啟其他窗體,建構函式傳值,開啟唯一窗體
製作乙個登入視窗form1,要求登陸後開啟乙個新視窗,隱藏該視窗 注 關閉新視窗時,該視窗不會關閉,程式未結束,需要用到建構函式傳值來關閉新視窗的同時,關閉該登入視窗.form2 f2 new form2 this user 橫線部分與下方講的傳值相對應 f2.show this.visible f...
winform彈出唯一窗體的方法
form1中btn1按鈕點選show出form2,當form2處於開啟狀態時,再次點選btn1不會繼續彈出窗體,而是將焦點定位至已開啟的form2上 當form2關閉後,再次點選btn1則會show出乙個新的form2 form1 建立乙個全域性集合,用來放置已經show出的窗體物件 listlis...
Winform 單例模式 同乙個視窗值開啟一次
1。在winform應用中,乙個窗體開啟另乙個窗體,用以下方式開啟會開啟多個視窗,像qq一樣會開啟多個登陸視窗,有時應用中只開啟乙個 form2 form new form2 form.show 方法就是在在form2中建立乙個靜態欄位和乙個靜態方法,用方法來建立form2的例項 public pa...