Я использую следующий код для создания MessageBox с диалогом. По умолчанию кнопка «Да» имеет фокус. Если я случайно нажимаю клавишу пробела, в диалоговом окне понимается, что я выбрал Да. Я хочу, чтобы это было, только если я нажимаю клавишу возврата, чтобы вызвать событие. Есть ли способ отключить клавишу «Пробел» от отправки ответа?DialogResult MessageBox отключить пробел (пробел) от отправки ответа
DialogResult dialogResult = MessageBox.Show(sMsg, "Title", MessageBoxButtons.YesNo);
if(dialogResult == DialogResult.Yes)
{
// do something
}
else if (dialogResult == DialogResult.No)
{
// do something else
}
Спасибо, Дэвид. Я использовал MessageBox.Show (sMsg, sTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification, false); и это изменило кнопку по умолчанию от «Да» до «Нет». Однако мне интересно отключить клавишу пробела от отправки какого-либо ответа. Я мог бы сделать другую форму только для этого MessageBox и обрабатывать ключевые события для каждой кнопки, но это кажется мне расточительным. –
@Nick_F: Это проще сделать, чем создать глобальный крючок клавиатуры, чтобы перехватить клавишу пробела (что является другим, но сложнее). –
@Nick_F: Я видел много вопросов на разных форумах на протяжении многих лет, когда они хотят изменить поведение диалогов Windows. Ответ просто: это невозможно (или, может быть, более правильно: слишком сложно для обычного разработчика). Поэтому всегда лучше создавать свой собственный диалог, если вам нужно другое поведение/внешний вид. –