2016-03-30 333 views
1

私はポップアップを表示する必要があるwinformアプリケーションに取り組んでいます。私は現在ShowDialog()メソッドでそれをやっています。要件が変更されたため、非ダイアログとして表示したいと考えています。だから、showDialog()の代わりにshow()メソッドを使用しました。showとshowdialogの違いは何ですか?C#.netのフォームクローズの期間です。

ポップアップウィンドウで、Windows WebBrowseコントロールを子コントロールの1つとして使用しています。

私の問題はshowDialog()メソッドを使用すると、everthingがうまく動作します。 私はshow()メソッドを使用し、ポップアップを閉じると(一度ユーザーは彼の仕事を終えた)、何とかメソッドを呼び出すと、WebBrowseコントロールのメソッドが呼び出され、同じポップアップを再起動して "Can not 「配置オブジェクトへのアクセス」エラーが発生します。

これは、show()メソッドまたはWebBrowseコントロールで予期される動作です。はいの場合はどうすれば解決できますか?

注:PopUpダイアログボックスはDIを使用してプレゼンターに挿入されるため、すべての破棄後にポップアップを挿入することはできません。

ありがとうございます。 ShowDialog()を使用することによって、あなたは、単に(ショーを使用することにより、バックあなたの親フォームへ行くことができない

+0

面白いようですが、コードを投稿できますか? –

+0

showメソッドには、明示的なユーザーアクションまたはコードによってトリガーされるまで、コントロールを破棄する規定はありません。 –

答えて

1

)あなたが戻って行くことができ、それがShow()を持つすべての

0

だ、あなたのコードは、表示ステートメントの後の行に進みます。 ShowDialog()では、そうではありません。

+0

これはおそらく、コードがコントロールをコード内に配置する行をさらに実行するためです –

1

Close()の代わりにHide()を試してみることができます。

(これはWPFの一例である)あなたのダイアログウィンドウのコンストラクタで

public Window() 
{ 
    this.Closing += Window_Closing; 
} 

これを配置し、近いイベントをキャンセルし、代わりにこの

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    e.Cancel = true; 
    this.Hide(); 
} 

などの後にウィンドウを非表示します閉じたウィンドウを再び開くことができるはずです。この問題は、ウィンドウの内容を手動で消去する必要があることです。これは、最後に使用した内容が含まれていないためです。

関連する問題