2011-07-28 6 views
0

私はフォームを持っていて、その上にショーダイアグをしています。それはmsgボックスのようなものです。私は何かをしていますフォームはバックグラウンドに入ります

msgBox = new MsgBox(); 
    if (msgBox.InvokeRequired) 
    { 
     msgBox.Invoke(new ShowMsg(ShowMessage)); 
    } 
    else 
    { 
     ShowMessage(); 
    } 

私は表示ダイアログをしています。しかし、このフォームは何度かメインフォームの背景になります。これを手伝ってください。

+0

正確ShowMsgは何ですか?デリゲートを継承する型ですか? –

+1

デバッガを使用します。 InvokeRequiredは常にfalseであることがわかります。まだ表示されていないフォームではInvokeRequiredを使用できないことを示す例外があります。 –

答えて

0

ここでどのような混乱を使用してみてください!

は、フォームクラスから派生したカスタムタイプのMsgBoxですか?そうであれば、ShowDialogメソッドを呼び出してモーダルで表示させることができます。

できない場合は、ShowMessageメソッドのコンテンツを共有してください。

2

スレッドを使用していますか?

スレッドの場合は、msgbox自体ではなく、親フォームを呼び出す必要があります。

Form frm = new Form(); 
if (parent.InvokeRequired) 
{ 
    parent.Invoke(new ThreadStart(() => 
     { 
      frm.ShowDialog(); 
     })); 
} 
else 
{ 
    frm.ShowDialog(); 
} 

スレッドを使用しないで作業するだけで、呼び出しを削除し、ShowMessageとmsgboxの機能を少し説明してください。

0

ShowDialogにはどのように電話しますか?メインウィンドウ(またはその子ウィンドウ)をShowDialogメソッドに渡す必要があるため、適切な親ウィンドウがあります。

0

ないあなたShowMsgとShowMessageメソッドがどのように見えるが、これを試してみる方法がわから:

msgBox = new MsgBox(); 
if (msgBox.InvokeRequired) 
{ 
    msgBox.Invoke((MethodInvoker)delegate() { ShowMessage(); }); 
} 
else 
{ 
    ShowMessage(); 
} 
関連する問題