Разница между «Нет» и «Отмена» в MessageBoxButtons - PullRequest
2 голосов
/ 24 августа 2011

Я использовал MessageBox для отображения подтверждающего сообщения, когда пользователь идет на удаление элемента и первоначально использовал MessageBoxButtons.YesNoCancel. Позже я изменил его на YesNo вместо этого, потому что пользователь указал, что в этом случае нет реальной разницы в «Нет» и «Отмена». Мой вопрос ... в чем разница? Есть ли причина использовать YesNoCancel вместо YesNo?

Ответы [ 6 ]

7 голосов
/ 24 августа 2011

В вашем случае нет никакой разницы, так как ваш вопрос приводит к одному действию, а затем завершается.

При стандартном использовании «Да Нет» «Отмена» обычно задает вопрос, «Да» или «Нет» выберет другое действие изатем выполните еще одно действие (например, выход из формы). Отмена отменит все действия.

Например: выход из Word, вы хотите сохранить?«Да, нет, отмена».«Да» и «Нет» будут продолжать выходить с сохранением или без сохранения, «Отмена» не будет сохранять или выходить.

Что бы вы ни делали, убедитесь, что «Отмена» выполняет то, что пользователь ожидает больше всего - я навсегда отменяю спам, если засыпается окнами сообщений, когда янужно сосредоточиться на чем-то еще.Если я что-то отменяю, я не хочу терять много работы, потому что у меня не было времени остановиться и правильно с этим справиться.

Пользователи злоупотребляют отменой: -)

3 голосов
/ 24 августа 2011

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

Да будет означать перезапись файла. «Нет» может означать добавление «(1)» в конце имени файла или запрос другого имени файла. Отмена может означать не сохранять в конце концов.

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

ПОМНИТЕ, ЧТОБЫ ОБРАТИТЬСЯ ОТМЕНИТЬ ВСЕГДА, потому что, если пользователь нажимает кнопку x в верхнем правом углу диалогового окна, результат ShowDialog() будет DialogResult.Cancel!

2 голосов
/ 24 августа 2011

Я уверен, что достаточно легко придумать сценарий, в котором между ответом «Нет» и «Отмена» будет символическое различие.Традиционно «Отмена» должна вернуть программу в ее состояние перед началом текущей серии операций.«Нет», безусловно, не имеет такого же правила.

Пример:

«Вы хотите удалить файл 4 из 10?»
Да: Удалить файл
Нет: не удаляйте файл, перейдите к файлу 5 из 10
Отмена: выйдите из этой операции и вернитесь к тому, что файлы не были удалены.

2 голосов
/ 24 августа 2011

Вот пример того, когда YesNoCancel будет уместным:

"Хотите ли вы сохранить свои изменения перед выходом?"

  • Да - Сохранить и выйти
  • Нет - не сохранять и выходить
  • Отмена - я нажал кнопку случайно, не выходить.
1 голос
/ 24 августа 2011

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

Конечно, для небольшой процедуры или простой ситуации «Отмена» и «Нет» имеютбез разницы.

1 голос
/ 24 августа 2011

Вот пример:

Скажем, вы выходите из приложения с несохраненным файлом, например, текстовым процессором.

При выходе выдается подтверждение: «В вашем файле есть изменения, которыене были сохранены. Хотите сохранить их? "

В этом случае:

Да = сохранить файл и выйти

Нет = выйти и потерять изменения

Отмена = отмена выхода и возврат в приложение

...