- - PR -
MessageBoxについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-07-09 14:06
いつも勉強させて頂いております。
現在、ASP.NETのページ上でボタンを押した際に、MessageBoxを 表示させる極めて簡単なページを作成しておりますが、実行させる と読み込み中の状態が長時間続き、全くMessageBoxが表示される 気配もありません。 コードは下記になります。 _______________________________ MessageBoxクラス using System; using System.Runtime.InteropServices; public class MessageBox { [ DllImport( "User32.dll", EntryPoint="MessageBox", CharSet=CharSet.Auto )] public static extern int MsgBox( int hWnd, String text, String caption, uint type ); } ボタンが存在するページ上で public void Msg_Button(object sender,System.Web.UI.WebControls.CommandEventArgs e){ MessageBox.MsgBox(0,"メッセージボックス表示","MsgBox Sample", 0); } _______________________________________ 概略なので、表記ミスがあるかもしれませんが、上のようにして実行しています。 エラーは一切起こらないのですが、表示されません。 どなたかご存知の方いらっしゃいましたら、ご教授御願いします。 よろしくお願いします。 |
|
投稿日時: 2003-07-09 14:50
・ASP.NETでのコードは、サーバで動くので、クライアントにメッセージを出すには、javascriptを使うしかないのではないでしょうか。
他に気づいた点 ・MessageBoxは、user32.dllではなく、System.Windows.Forms.MessageBoxを使った方がいいのではないでしょうか。(ASP.NETでは使えないですが) ・javascriptでは役不足ならば、リッチクライアントという選択肢があるかもしれません。 |
|
投稿日時: 2003-07-09 15:04
こんにちは、
そのプログラムですと、サーバーにメッセージボックスがでていると 思います。ただ、見えないところにですが・・・。 下のプログラムで表示できると思います。 よかったら使ってみてください。 Page_Load(object sender, System.EventArgs e) { // ページを初期化するユーザー コードをここに挿入します。 btnTest.Attributes["OnClick"] = "return confirm('テストを実行しますか');"; } private void btnTest_Click(object sender, System.EventArgs e) { if (lblLabel.Text == "") lblLabel.Text = "ボタンが押されました"; else lblLabel.Text = ""; } #私のページに説明があるのでよかったら見てみてください。 #ただ、今はちょっとネットワークが調子悪いので 見えない場合があります。 |
|
投稿日時: 2003-07-09 15:33
ME-5501様ご返事ありがとうございました。
無事起動できました。 もともと http://www.microsoft.com/japan/msdn/net/general/faq111700.asp のページを参考にしていたのですが、駄目だったので、困っていました。 一つご質問なのですが、元のソースをサーバマシンでデバッグを追ってましたが、 MessageBoxの表示がどこにもでませんでしたが、プロセスか何かが起動するだけ なのでしょうか? 今後もご教授よろしく御願いします。 |
|
投稿日時: 2003-07-09 15:54
見えないものなので、なんともいえないのですが。
Webサービスは画面を持っていないので、MessageBoxも 画面に出てこれないんだと思います。 その前に処理されてないかも しれませんが・・・ 参考にしたページは、WindowsFormでAPIを使ってのメッセージ ボックスの表示するというサンプルですね。 ASP.NETで、画面の操作とかは、しないでください。 行き場を失いますから。Webサービスが可愛そうです。 |
|
投稿日時: 2003-07-09 16:03
もう一つ、
誰が、誰の環境で動いているか考えてみてください。 クライアントアプリは プログラムが、.NET Framework上で動いています。 Webシステムは、 クライアントでは、 IEが、Windows上で動いています。 リクエストを受けたWebサーバーでは、 プログラムが、サーバーの.NET Frameworkで動いています。 Webシステムですと、リクエストを受けるサーバー上のプログラムを 書く事になります。ここで画面に表示を行うプログラム(メッセージボックスの表示) を書くと、サーバーの.NET Frameworkで処理されて、サーバーの画面に メッセージボックスを表示させようとします。 プログラムがどこで動いているのか もう一度考えてみてください。 説明が下手ですが、わかりますでしょうか? |
|
投稿日時: 2003-07-09 17:08
ME-5501様ご返答ありがとうございます。
私の勘違いで申し訳ありませんでした。 あのページの内容はWindowsFormの話だったんですね。 ちなみに、私の今回の開発環境はWindows2000サーバ 上でVS.NETでWebアプリケーションを開発し、デバック してもでなかったのでおかしいなと思っての質問でした。 恐らく、これもForm上のAPI使用を無理やりWebForm上 で動かした為にできなかったのだと思います。 今後もご指導よろしく御願いします。 |
1