YesNo MessageBox не закрывается при нажатии кнопки x - PullRequest
2 голосов
/ 10 октября 2009

Когда я открываю MessageBox с опциями YesNo, крестик отмены (обычно) отображается в правом верхнем углу, но не имеет никакого эффекта.

System.Windows.MessageBox.Show("Really, really?", "Are you sure?", MessageBoxButton.YesNo);

Если я предлагаю YesNoCancel в качестве параметров, нажатие на крестик закрывает диалог с DialogResult Cancel.

System.Windows.MessageBox.Show("Really, really?", "Are you sure?", MessageBoxButton.YesNoCancel);

Я бы ожидал, что крест "выглядит отключенным", если он вообще не скрыт, при нажатии он не имеет никакого эффекта. Вероятно, я не первый, кто наблюдает это. Какой ваш любимый способ скрыть / отключить эту кнопку или обойти проблему?

Примечание: я бы предпочел решение, которое не использует System.Windows.Forms, так как я имею дело с проектами WPF и хотел бы по возможности избегать InterOp.

Ответы [ 3 ]

8 голосов
/ 30 марта 2010

Кнопка «Закрыть» (в строке заголовка MsgBox): поскольку окно MsgBox является встроенной функцией операционной системы, кнопка X активируется только при наличии определенных кнопок. Если есть только кнопка ОК, нажатие кнопки X аналогично нажатию кнопки ОК. В противном случае кнопка X будет отключена, если только нет кнопки «Отмена», в этом случае нажатие на X аналогично нажатию кнопки «Отмена».

http://www.autohotkey.com/docs/commands/MsgBox.htm

Это поведение по умолчанию! с момента, когда это был MsgBox, до времени, когда это был MessageBox!

2 голосов
/ 10 октября 2009

Ознакомьтесь с этой статьей CodeProject , в которой описывается вращение вашего собственного класса MessageBox. Есть раздел по отключению кнопки закрытия.

1 голос
/ 09 июля 2015

Когда вы удаляете файлы в проводнике (когда в свойствах корзины установлено флажок подтверждения), появляется окно с сообщением «Вы уверены, что хотите переместить эти элементы x в корзину? с надписью «Удалить подтверждение» и X в правом углу. Escape также работает. Доступны только кнопки «да» и «нет». Как мы можем это сделать?

Либо Microsoft не следует их указаниям, либо не делает это доступным для разработчика.

...