
今まで何気なくMessageBoxを使っていて、表示されなかったケースというのが一度も無かったのですが、今作成しているプログラムでオブジェクトのイベントではない、関数内でMessageBoxを書くと、表示されないので、どうしてなのか理由がわからず悩んでいます。
例えば、ボタンクリックイベント内で、
C#
1private void button1_Click(object sender, EventArgs e) 2{ 3 MessageBox.Show("こんにちは。"); 4 return; 5}
このような書き方であれば、メッセージボックスは出ます。
しかしながら、
C#
1private void button1_Click(object sender, EventArgs e) 2{ 3 function(); 4 return; 5} 6 7private void function() 8{ 9 MessageBox.Show("こんにちは。"); 10 return; 11}
こんな感じで、処理を関数にして、関数内でメッセージボックスを呼ぶと、エラーにはなりませんが、メッセージが出ません。
これは何故でしょう?
また、いろいろ調べたところ、ソースの中で、webBrowserをnewしているのですが、このwebBrowserのnewをしなければ、メッセージボックスはきちんと表示される事がわかりました。
また、webBorwserをnewしても、メッセージボックスを2回連続でshowすると、2回目は表示される事がわかりました。
ちなみに、こんな風にです。
C#
1private void function() 2{ 3 4 // webBrowserのサブクラスを作成し、インスタンス化 5 int iRet = webBrowser1.NavigateAndWait(); 6 7 DialogResult result; 8 result = MessageBox.Show("こんにちは。"); // これは表示されない 9 result = MessageBox.Show("こんばんは。"); // これは表示される 10 11 return; 12}
また、表示されないメッセージボックスのresultには、値は"NO"になっており、表示される方は、"OK"になっています。
また、使っているのは、Visual Studio Comunity 2015で、OSは、Wndows 7です。
回答3件
あなたの回答
tips
プレビュー