В поисках элегантного диалога «Не показывать мне этот диалог» в C # - PullRequest
6 голосов
/ 25 ноября 2010

Я искал диалог с флажком «Не показывай мне этот диалог снова» в C #.

Я много гуглил и искал, но просто не смог найти элегантного решения.

Диалог должен работать так же, как собственный MessageBox.Show, но с новым значением свойства (значением bool), возвращаемым вызывающей стороне.

Спасибо.

Ответы [ 3 ]

7 голосов
/ 25 ноября 2010

Приложения Vista и Windows 7 могут использовать новые функции TaskDialog, которые расширяют стандартные MessageBoxes для поддержки флажка внизу (наряду со всеми видами других полезностей, таких как Командные ссылки, текст пользовательских кнопок, нижние колонтитулы и т. Д.).

alt text

К сожалению, из C # вам нужно сделать некоторые взаимодействия для доступа к этому.Если вы просто хотите, чтобы расширенные TaskDialogs предназначались для Vista / Windows 7, используйте пакет WindowsAPICodePack из http://code.msdn.microsoft.com/WindowsAPICodePack, который может справиться со сложностью взаимодействия.

Если вам нужна поддержка XP, есть отличныйОбертка, которая поддерживает родные TaskDialogs в Vista / 7 с резервным вариантом WinForms для XP здесь: http://www.codeproject.com/KB/vista/Vista_TaskDialog_Wrapper.aspx

3 голосов
/ 25 ноября 2010

Почему бы вам не создать свой собственный. Это очень просто. Просто выведите класс System.Windows.Forms.Form и имитируйте его так, как вам нужно.

0 голосов
/ 25 ноября 2010

Не думаю, что будет готовое решение как таковое. Для реализации «Больше не показывать меня» вам нужно сохранить информацию вне dailog, а также создать профиль пользователя.

Если ваша инфраструктура сохранения профиля пользователя существует, вы можете просто создать класс, аналогичный классу messagebox. Вы не можете получить от messagebox однако.

...