Замена для да / нет / отмена MessageBox (C #) - PullRequest
4 голосов
/ 10 октября 2009

Я ищу достойную замену стандартным окнам YES / NO или YES / NO / CANCEL MessageBox.

Я часто видел, как эти стандартные диалоги неправильно использовались такими способами, как: «Сохранить в текстовом виде ответ ДА ​​или сохранить в HTML ответ НЕТ». Очевидно, что текст должен гласить «Сохранить как:», а кнопки должны быть помечены как «Текст» и «HTML». Это не вопрос «да / нет», который задают, и хотя его можно сформулировать таким образом, его будет нелегко прочитать и понять.

Microsoft не дает возможности изменить текст на кнопках. Не существует быстрого / простого способа создать замену с нуля ... о чем свидетельствует количество приложений, использующих неудобный стиль, упомянутый выше.

Существует ли какой-нибудь бесплатный диалог замены C # или MessageBox, который позволяет вам по крайней мере:
- укажите количество кнопок
- укажите текст, который будет отображаться на каждой кнопке
- укажите кнопку по умолчанию

Я посмотрел и не смог найти.

(Я бы сам его создал, но я не достаточно знаком со всем поведением, которое должно иметь полностью функциональное управление, поскольку мне нужно / нужно / знаю только небольшое подмножество. Два примера, которые я не использую: темы и интернационализация. Мне нужно что-то, что мои коллеги тоже захотят использовать.)

Ответы [ 4 ]

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

Извлечение Рассеивание MessageBox в CodeProject. Проект немного устарел, но он в точности соответствует тому, что вы ищете, и для его обновления не нужно много времени.

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

В зависимости от вашей целевой платформы, диалог задач может быть хорошим способом сделать это. В пакете программ Windows API Code имеется оболочка .NET для диалогов задач. Однако они предоставляются только в Windows Vista и выше, но не в XP или 2003.

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

Я согласен с Фрэнком. Не было бы слишком сложно создать свою собственную универсальную форму, которая будет обрабатывать это для вас. Не входя в код, форма должна сделать следующее

1) Имейте свойство устанавливать сообщение, которое вы хотите показать пользователю.

2) Есть метод для добавления кнопок, с 2 аргументами, один для текста кнопки и один для результата диалога

3) Когда форма отображается, она должна находиться в модальном диалоговом режиме, чтобы остальная часть приложения была неактивной, пока не нажата одна из опций.

Итак, чтобы создать Сохранить как / Не сохранять / Отменить, вы должны добавить 3 кнопки на шаге 2, все с соответствующим текстом кнопки и результатом диалога.

Используя макет Flow, вы сможете настроить его правильное отображение независимо от размера сообщения или количества кнопок.

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

Честно говоря, создать такой ящик сообщений не так сложно, у нас есть такая штука, работающая в текущем приложении, которое мы разрабатываем.

Что вам нужно, так это FlowLayout для кнопок, которые будут автоматически выравнивать любые созданные вами кнопки. Наш API тогда имеет что-то вроде (params Tuple [] кнопки)

Tuple - это вспомогательный класс, который содержит два значения. Строка - это текст кнопки, наш диалог сообщений возвращает диалог, когда нажата кнопка с указанным текстом.

...