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 на стороне сервера, а не на стороне клиента! Таким образом, ваше сообщение будет отображаться в серверной системе, а не в пользовательской системе, которая просматривает ваш веб-сайт!