2009-09-08 7 views
5

メッセージボックスの確認を拒否できないように、メッセージボックスをユーザーに表示します。ユーザーは、メッセージボックスを確認するまで、画面内で何か他の操作を行うことはできません。MessageBox in c#

これはWindowsベースのC#アプリケーションです。

主なものは、たとえ私がWindowsのメッセージボックスを使用しています。いくつかの時間は、いくつかの画面の後ろに隠れています。しかし、私の場合は、メッセージボックスが表示されるたびに一番上に表示したい。

私はメッセージボックスに乗っている他のサードパーティアプリケーションを使用しています。私はこれを克服したい。これを行うにはどのように

...

+0

このタイプのメッセージボックスは「システムモーダル」と呼ばれ、システムの残りの部分を無効にするアプリケーションを誰も気に入らないので、これは非常に最小限です。なぜあなたのアプリはこれを許可されますか? – rein

答えて

4

あなたは、あなた自身のフォームを作成する必要があり、それがモーダルにする、上に常にそれを作るためのzオーダーを変更し、すべてのキーストロークとマウスクリックをキャプチャします。一番上には、必ず

http://www.codeguru.com/cpp/w-d/dislog/article.php/c1857

2

MessageBoxの標準実装は何が必要行わない場合は、あなたがあなた自身のフォームを作成し、ShowDialog()メソッドを使用する必要があります。

+0

主なものは、たとえ私がWindowsのメッセージボックスを使用しています。いくつかの時間は、いくつかの画面の後ろに隠れています。しかし、私の場合は、メッセージボックスが表示されるたびに一番上に表示したい。 – Anuya

+0

私はメッセージボックスに乗っている他のサードパーティアプリケーションを使用しています。私はこれを克服したい。 – Anuya

4

は、この記事を見てみましょう

MessageBox.Show Examples in Windows Forms C#

編集:

あなたはまた、特定のアプリケーションのすべてのウィンドウの上にそれを作るために、フォームの一番上のプロパティを使用することができます。

How to: Keep a Windows Form on Top

モーダルダイアログの呼び出しとしてにShowDialog方法をフォームを表示します。

Form frmAbout = new Form(); 
frmAbout.ShowDialog(); 
1

メッセージボックスが別のスレッドに表示されているように聞こえます。メインのUIスレッドでMessageBox.Showを呼び出すことを確認する必要があります。以下は、これを達成するための方法を示したコードスニペットです:

public class FooForm: Form 
{ 

    //This is just a button click handler that calls ShowMessage from another thread. 
    private void ButtonShowMessage_Click(object sender,EventArgs e) 
    { 
    //Use this to see that you can't interact with FooForm before closing the messagebox. 
    ThreadPool.QueueUserWorkItem(delegate{ ShowMessage("Hello World!");}); 

    //Use this (uncomment) to see that you can interact with FooForm even though there is a messagebox. 
    //ThreadPool.QueueUserWorkItem(delegate{ MessageBox.Show("Hello World!");}); 
    } 

    private void ShowMessage(string message) 
    { 
    if(InvokeRequire) 
    { 
     BeginInvoke(new MethodInvoker(() => MessageBox.Show(message))); 
    } 
    else 
    { 
     MessageBox.Show(message); 
    } 
    }  
} 

私はあなたが複数のUIスレッドを持っており、そのうちの一つは、メッセージボックスをポップするとき、あなたはそのメッセージボックスをしたいシナリオを持っていないと仮定していますUI全体でモーダルであること。それはより複雑なシナリオです。