新聞中心
1、帶有登錄窗口的Window程序啟動(dòng)控制

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供云南網(wǎng)站建設(shè)、云南做網(wǎng)站、云南網(wǎng)站設(shè)計(jì)、云南網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、云南企業(yè)網(wǎng)站模板建站服務(wù),10年云南做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
默認(rèn)的Main函數(shù)是:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
關(guān)鍵的是Application.Run(new frmMain());這一句,如果Run函數(shù)里是主窗口,則就要另外想辦法在主窗口顯示之前讓用戶登錄;如果Run函數(shù)里創(chuàng)建的是登錄窗口,則登錄窗口完成其登錄工作之后,就只能隱藏,而不能關(guān)閉,否則整個(gè)應(yīng)用程序就結(jié)束了。
解決這種問(wèn)題主要有兩種方法:
1)Application.Run(new frmMain());函數(shù)里創(chuàng)建主窗口,在主窗口加載后,顯示之前使之隱藏并顯示登錄窗口,如果登錄成功,則關(guān)閉登錄窗口,顯示主窗口;如果登錄失敗,則結(jié)束應(yīng)用程序。這樣處理有一個(gè)小問(wèn)題,就是要無(wú)論登錄是否成功,實(shí)際都要加載主窗口的。好處是不用修改Main函數(shù),對(duì)一些用戶來(lái)說(shuō),可能更好控制一些。
2)修改Main函數(shù),使之在Application.Run(new frmMain());之前進(jìn)行登錄驗(yàn)證,登錄成功則正常運(yùn)行,登錄失敗則結(jié)束應(yīng)用程序。大體過(guò)程如下:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
frmLogin login = new frmLogin();
login.ShowDialog(); // 注意這個(gè)地方只能是ShowDialog,而不能是Show
if(login.HasLogin) // 判斷是否登錄成功
{
login.Close();
Application.Run(new frmMain());
}
else
{
Application.Exit();
}
}
這樣做的好處是在登錄失敗時(shí),直接關(guān)閉應(yīng)用程序,而無(wú)需加載主窗口。
實(shí)際兩種方法都可以達(dá)到相同的目的。
2、回車鍵按下時(shí)處理成等同于按下Tab鍵
常用的處理方法有兩個(gè)
1)響應(yīng)每一個(gè)要處理的控件的keypress事件,在該事件中判斷如果按下的是回車,讓下一個(gè)控件獲得焦點(diǎn)。代碼如下:
private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == 13)
{
// nextControl.Focus(); // 使下一個(gè)控件獲得焦點(diǎn)。
SendKeys.Send("{tab}"); // 這樣也是可以的。
}
}
2)所有要把回車處理成Tab的控件共享一個(gè)keypress事件,當(dāng)按下的是回車時(shí),發(fā)送一個(gè)tab鍵。代碼如下 :
private void my_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}
第一種處理方式是針對(duì)每一個(gè)控件寫(xiě)事件,其好處是更好控制,尤其是在除處理回車按鍵外還要實(shí)現(xiàn)其他功能時(shí),就只能這樣處理。第二種方式的好處是可以多個(gè)控件共享同一個(gè)事件,特別是在動(dòng)態(tài)創(chuàng)建控件時(shí),而對(duì)每個(gè)控件只處理回車時(shí),可以動(dòng)態(tài)的把事件掛到控件上,這樣就更顯示出這種方式的優(yōu)勢(shì)。不足是對(duì)控件除要處理回車外還要有其他個(gè)性功能時(shí),就很難實(shí)現(xiàn)。
用戶可以根據(jù)實(shí)現(xiàn)情況進(jìn)行選擇使用。
當(dāng)前題目:詳解.NET2.0開(kāi)發(fā)Winform程序經(jīng)驗(yàn)
網(wǎng)站URL:http://www.dlmjj.cn/article/djcgcjg.html


咨詢
建站咨詢
