程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET 2.0開發Winform程序經驗詳解

.NET 2.0開發Winform程序經驗詳解

編輯:關於.NET

1、帶有登錄窗口的Window程序啟動控制

默認的Main函數是:

[STAThread]
static void Main()
{
Application.EnableVisualStyles();


Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new frmMain());


}

關鍵的是Application.Run(new frmMain());這一句,如果Run函數裡是主窗口,則就要另外想辦法在主窗口顯示之前讓用戶登錄;如果Run函數裡創建的是登錄窗口,則登錄窗口完成其登錄工作之後,就只能隱藏,而不能關閉,否則整個應用程序就結束了。

解決這種問題主要有兩種方法:

1)Application.Run(new frmMain());函數裡創建主窗口,在主窗口加載後,顯示之前使之隱藏並顯示登錄窗口,如果登錄成功,則關閉登錄窗口,顯示主窗口;如果登錄失敗,則結束應用程序。這樣處理有一個小問題,就是要無論登錄是否成功,實際都要加載主窗口的。好處是不用修改Main函數,對一些用戶來說,可能更好控制一些。

2)修改Main函數,使之在Application.Run(new frmMain());之前進行登錄驗證,登錄成功則正常運行,登錄失敗則結束應用程序。大體過程如下:

[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
frmLogin login = new frmLogin();
login.ShowDialog(); // 注意這個地方只能是ShowDialog,而不能是Show

if(login.HasLogin) // 判斷是否登錄成功
{
login.Close();
Application.Run(new frmMain());
}
else
{
Application.Exit();
}
}

這樣做的好處是在登錄失敗時,直接關閉應用程序,而無需加載主窗口。

實際兩種方法都可以達到相同的目的。

2、回車鍵按下時處理成等同於按下Tab鍵

常用的處理方法有兩個

1)響應每一個要處理的控件的keypress事件,在該事件中判斷如果按下的是回車,讓下一個控件獲得焦點。代碼如下:

private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar == 13)
{


//  nextControl.Focus(); //  使下一個控件獲得焦點。

SendKeys.Send("{tab}"); // 這樣也是可以的。

}


}

2)所有要把回車處理成Tab的控件共享一個keypress事件,當按下的是回車時,發送一個tab鍵。代碼如下 :

private void my_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
SendKeys.Send("{tab}");
}
}

第一種處理方式是針對每一個控件寫事件,其好處是更好控制,尤其是在除處理回車按鍵外還要實現其他功能時,就只能這樣處理。第二種方式的好處是可以多個控件共享同一個事件,特別是在動態創建控件時,而對每個控件只處理回車時,可以動態的把事件掛到控件上,這樣就更顯示出這種方式的優勢。不足是對控件除要處理回車外還要有其他個性功能時,就很難實現。

用戶可以根據實現情況進行選擇使用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved