2011-11-19 11 views
6

メインフォームがメニューであるシステムがあり、読み込み時にログインフォームがポップアップします。 元々、メニューの下にログインフォームがロードされていたので、this.topmost = trueを使用して前面に来ました。 (フロントに持ってきて、戻ってきてもうまくいきませんでした)ログインフォームが正しくフォーカスを失うことはありません

しかし、ユーザーが他の何か、例えばchromeをクリックすると、z-オーダーの最上部に、一番上の定義でとどまります。

私はdeactivateイベントを使用しようとしましたが、これはロード時にもう一度メニューフォームの背後に現れることを意味しました。

メニューフォームの背後に表示されないようにするにはどうしたらいいですか?

メニュー形式で
private void login_Deactivate(object sender, EventArgs e) 
{ 
    // do not want it to remain top most when the application is not in focus. 
    this.TopMost = false; 
} 

:これは勝利がメニュー形式にログインのフォームOwnerプロパティを設定してみてくださいtheForm.Show()theForm.ShowModal()

答えて

2

を変更してみてください、その後、フォームアプリケーションであると仮定すると、

private void Menu_Load(object sender, EventArgs e) 
{ 
    openLogin() 
} 

private void openLogin() 
{ 
    Cursor.Current = Cursors.WaitCursor; 
    login theForm = new login(this);    
    this.Enabled = false;    
    theForm.Show(); 
    Cursor.Current = Cursors.Default; 
    theForm.Activate(); 
    theForm.TopMost = true; // Make the login form display over the Menu  
}   
+0

大変ありがとうございました!乾杯。 –

+0

助けになるのはうれしい。 –

0

。 MSDNリンク上から

フォームが別のフォームによって所有されている場合、それは 所有者形で閉鎖又は隠されます。 ... 所有しているフォームは、 オーナーフォームの背後に決して表示されません。 findと などのWindows用の所有フォームを使用すると、所有者フォームが の場合に消えてはならないウィンドウを置き換えることができます。親フォームが所有するフォームを確認するには、

を としてください。

関連する問題