sopy7 Ответов: 2

Пользовательское окно сообщений Windows forms


Я хочу отобразить messagebox с кнопками, имя которых может быть передано в качестве параметра, и вернуть вызывающей функции значение, соответствующее нажатой кнопке
например, я хочу, чтобы две кнопки отображались как Ok и Cancel, когда пользователь нажимает Ok, Я хочу вернуть 0 и 1 для отмены вызывающей функции.
В другом случае вместо Ok-Cancel я хочу передать Yes, No, Cancel как имена кнопок и возвращаемое значение как 0,1,2 соответственно.
Возможно ли это в приложении Window Forms?

Что я уже пробовал:

Я создал другую форму, добавил кнопки в форму как Ok/Cancel/Yes/No/Retry/Ignore каждая кнопка имеет свой обработчик событий и соответствующий код для этого обработчика событий.
Но я не могу использовать одну кнопку в нескольких местах, так как она имеет один обработчик событий.
Пример: форма вызова этого пользовательского окна сообщения для отображения да и нет. При да будет отправлено электронное письмо, при "Нет" ничего не произойдет. В другом случае, т. е. форма B вызывает одно и то же пользовательское окно сообщения для использования кнопок Yes и No, но эта форма B хочет вставить данные в БД при нажатии кнопки Yes. т. е. различные функции будут использовать эти кнопки для выполнения различных операций, что не достигается тем, что я пробовал.

2 Ответов

Рейтинг:
2

CHill60

"Возможно ли это в приложении Window Forms?" - Да. Здесь есть несколько статей о CodeProject, которые могут дать вам некоторые идеи - Поиск[^]
Что касается нескольких обработчиков событий - это вызывающий модуль, который знает, что делать в зависимости от того, какая кнопка нажата. Пользовательское окно сообщения должно просто сказать вам ,какая кнопка была нажата


Рейтинг:
1

Ralf Meier

В основном это похоже на то, как чилл ответил в своем решении.
Вы можете создать свой собственный MessageBox - это не очень сложно.
Но... обычно действие происходит не из ящика сообщений. Обычно кнопки на форме MessageBox задают значение DialogResult, которое вычисляется с той точки, где вызывается MessageBox (например, где-то из вашей формы), и после его вызова. Поэтому обычно MessageBox дает обратную связь, такую как DialogResult-Enumation (которые на самом деле являются целочисленными значениями, но определенными).