2011-03-17 58 views
0

我遵循了一些建議,我今天到這裏,現在需要更多的幫助:使用用戶自定義控件登錄屏幕

我有一個用戶控件與登錄邏輯。 在MainForm中我使用這個:

private void Form1_Load(object sender, EventArgs e) 
{ 
     LoginScreen login = new MainMenu(); 
        login.Parent = this; 
        login.Dock = DockStyle.Fill; 
        login.Show(); 
} 

但我想它不是模態的,因此不停止原窗體應用程序。當然,我需要主窗體不會繼續,直到登錄窗體關閉(並且登錄成功)。

會使用正確的事件嗎?讓登錄對象引發登錄成功的事件並讓MainForm處理它 - 運行應用程序?

編輯:這是用戶控件,沒有ShowDialog方法可用。

回答

3

只需使用ShowDialog()而不是Show()

此外,ShowDialog()返回的DialogResult,這樣你就可以檢查用戶是否不按OK和關閉形式在這種情況下:

if(form.ShowDialog() != DialogResult.OK) 
{ 
    this.Close(); 
}else 
{ 
    //if login it's ok continue with main form loading... 
} 

編輯:

鑑於這是一個用戶控件:

  • 創建一個新的表單類並添加用戶控件(例如使用設計器)
  • 實例化,並調用你的FormLoad代碼ShowDialog()(代碼類似於您發佈的一個,但你需要實例化的登錄表單,而不是你的用戶控件)
+0

該用戶控件沒有ShowDialog方法:( – Mocco 2011-03-17 16:08:14

+0

哦,這是一個用戶控件...讓我編輯;) – digEmAll 2011-03-17 16:11:04

+0

檢查我的編輯;) – digEmAll 2011-03-17 16:23:07

0

相反的login.Show();您可以使用login.ShowDialog(this);,使其成爲窗體的模態彈出窗口。

0

如果它不是從Form類(這很奇怪)派生的,只需創建一個窗體並將其控制在窗體上,然後調用ShowDialog窗體的方法。不過,您必須以某種方式將表單關閉到登錄屏幕上的控件。如果它引發了一些事件,這應該不成問題。