0

ポップアウトメッセージボックスがあります。クリックすると常にブラウザの前にメッセージボックスが飛び出しますが、問題はブラウザの後ろに飛び出すことがあることです。メッセージボックスが常にブラウザの前に表示されるようにするためにできることはありますか?ありがとう。

protected void Button1_Click(object sender, EventArgs e)
{
    string appointmentdate = Convert.ToString(DropDownListDay.Text + "-" + DropDownListMonth.Text + "-" + DropDownListYear.Text);
    string appointmenttime = Convert.ToString(DropDownListTime.Text);


    using (SqlConnection con = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True"))
    {
        con.Open();
        SqlCommand data = new SqlCommand("Select COUNT(*) from customer_registration where adate='" + appointmentdate + "'AND atime='" + appointmenttime + "'", con);
        Int32 count = (Int32)data.ExecuteScalar();
        if (count == 0)
        {
            SqlConnection con1 = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True");
            SqlCommand cmd = new SqlCommand("UPDATE customer_registration SET servicetype = @servicetype, comment = @comment, adate = @adate, atime = @atime where username='" + Session["username"] + "'", con1);
            con1.Open();

            cmd.Parameters.AddWithValue("@servicetype", DropDownListServicetype.Text);
            cmd.Parameters.AddWithValue("@comment", TextBoxComment.Text);
            cmd.Parameters.AddWithValue("@adate", DropDownListDay.Text + "-" + DropDownListMonth.Text + "-" + DropDownListYear.Text);
            cmd.Parameters.AddWithValue("@atime", DropDownListTime.Text);
            cmd.ExecuteNonQuery();

            con1.Close();
            Response.Redirect("MakeAppointmentSuccess.aspx");
        }
        else
        {
            MessageBox.Show("This appointment is not available. Please choose other date & time.");
            con.Close();
        }
    }
}
4

3 に答える 3

2

Win32 メッセージ ボックスと ASP.NET の Response.Redirect を混在させています。この投稿には ASP.NET のタグが付けられており、Response.Redirect を呼び出しているため、これは ASP.NET アプリケーションであり、WinForms または WPF アプリケーションではないと想定しています。

何が起こっているかというと、「サーバー」ではメッセージ ボックスがポップアップし、ブラウザは「クライアント」であり、開発者のマシンでは同じことです。ASP.NET アプリケーションから MessageBox.Show を呼び出さないでください。その理由は、表示されているメッセージ ボックスがブラウザーからのものではないためです。これを真のサーバーに展開すると、クライアントにはメッセージ ボックスが表示されず、サーバーにメッセージ ボックス ウィンドウが表示される場合と表示されない場合があります (状況によって異なります)。実行しているユーザーと権限は何ですか)。

ブラウザで「MessageBox」スタイルのアラートを作成するには、JavaScript の alert() 関数を使用する必要があります。これは、ブラウザーによってレンダリングされた HTML (ASPX) または JS ファイルに対して行うか、ScriptManager.RegisterStartupScript を呼び出して行うことができます。詳細については、この SO の質問に対する回答をご覧ください: ScriptManager.RegisterStartupScript コードが機能しない - なぜですか?

于 2013-01-15T15:23:00.360 に答える
0

Windows フォームを使用している場合は、次のプロトタイプを呼び出します。

public static DialogResult Show(
    IWin32Window owner,
    string text
)

Process.GetCurrentProcess().MainWindowHandleとして渡しますIWin32Window owner

代わりに、WPF を使用している場合は、次のプロトタイプを呼び出します。

public static MessageBoxResult Show(
    Window owner,
    string messageBoxText
)

Application.MainWindowとして渡しますowner

于 2013-01-15T15:15:02.607 に答える
-1

最初のパラメーターとして IWin32Window を受け入れる MessageBox.Show() のオーバーロードを使用できますか? 最初のパラメーターとして「this」を渡すことができるはずです。

MessageBox.Show(this, "This appointment is not available. Please choose other date & time.");

ただし、そのパラメーターを省略すると、現在アクティブなウィンドウを親ウィンドウとして選択する必要があるため、それは役に立たないと思います...

あなたが絶対に必死なら、これを行うことができます:

MessageBox.Show
(
    "This appointment is not available. Please choose other date & time.",
    Application.ProductName,
    MessageBoxButtons.OK,
    MessageBoxIcon.Information,
    MessageBoxDefaultButton.Button1,
    MessageBoxOptions.DefaultDesktopOnly
);

ただし、お勧めしません。これは、他のすべてのアプリケーションの前に表示されるシステム モーダル ダイアログです。

于 2013-01-15T15:14:26.810 に答える