MessageBox продолжается автоматически без нажатия на кнопку

У меня есть сообщение с двумя кнопками и текстом. Это соответствующий код:

var result = MessageBox.Show("just a text","just a title",MessageBoxButtons.OKCancel,System.Windows.Forms.MessageBoxIcon.Warning,System.Windows.Forms.MessageBoxDefaultButton.Button1, System.Windows.Forms.MessageBoxOptions.ServiceNotification | System.Windows.Forms.MessageBoxOptions.RightAlign);
if (result == DialogResult.OK)
{
    ... code ...
}

Моя проблема в том, что программа вводит код внутри "если" автоматически, а всплывающее окно с сообщением даже не отображается. Даже когда я отлаживаю его, я вижу, что код переходит в строку "если", и в результате получается DialogResult.OK.

Я использую веб-формы и ASP.Net.

пространство имен для MessageBox - "System.Windows.Forms".

Я попытался очистить кеш и даже iisreset.

Что еще может помочь мне?

Заранее спасибо.

2 ответа

Решение

Я использую веб-формы и ASP.Net.

пространство имен для MessageBox - "System.Windows.Forms".

Не делай этого. Сайт ASP.NET работает на сервере, поэтому никто не может нажать MessageBox если бы это даже всплыло на сервере.

Если вы хотите показать всплывающее окно пользователю, оно должно быть в Javascript. См. Как сделать простое всплывающее окно да / нет в ASP.NET, которое возвращает результат обратно в мой C#?,

Здесь есть два вопроса. В логике кода метод MessageBox Show работает одновременно с основным потоком. Поэтому при запуске метода Show сразу же запускаются коды после его запуска, и основной поток не ждет ответа! Если вы хотите быть основным потоком, ожидающим закрытия сообщения, вы должны использовать функцию ShowDialog в MessageBox. ( Справочник MSDN)

Но теперь вы работаете в ASP, и это сильно отличается от Windows, как сказал наш дорогой друг CodeCaster, ASP на стороне сервера, а не на стороне клиента! Таким образом, ваше сообщение будет отображаться в серверной системе, а не в пользовательской системе, которая просматривает ваш веб-сайт!

Другие вопросы по тегам