“不”和“不”的区别和“;Cancel"在MessageBoxButtons
本文关键字:MessageBoxButtons quot 区别 Cancel | 更新日期: 2023-09-27 18:06:36
我使用MessageBox来显示用户删除项时的确认消息,并最初使用MessageBoxButtons.YesNoCancel。后来我把它改为YesNo,因为一个用户指出,在这种情况下,"no"answers"Cancel"没有真正的区别。我的问题是……有什么区别呢?是否有理由使用YesNoCancel而不是YesNo?
在你的情况下,没有区别,因为你的问题只导致一个动作,然后结束。
在标准用法中,"是"或"否"通常会询问一个问题,"是"或"否"将选择一个不同的操作,然后继续执行另一个操作(如退出表单),"取消"将放弃所有操作。
例如:退出Word,你想保存吗?"是,否,取消"。"是"answers"否"将继续退出,无论是否保存,"取消"将不保存或退出。
无论你做什么,确保Cancel做的是用户最期望的——当我必须专注于其他事情时,如果被消息框轰炸,我永远会垃圾邮件Cancel。如果我取消了一些事情,我不想因为没有时间停下来妥善处理而失去很多工作。
用户滥用取消:-)
当然有可能。例如,如果有一个保存对话框,您输入一个已经存在的文件名,对话框可能会询问您是否要覆盖该文件。
Yes表示覆盖文件。No可能意味着在文件名的末尾附加一个"(1)",或者提示输入一个不同的文件名。取消可能意味着根本不保存。
您应该注意到Yes
, No
和Cancel
都是不同的枚举,它们的值不相同,因此您可以对它们进行不同的处理。
记住处理取消无论如何,因为如果用户单击x
按钮在对话框屏幕的右上角,ShowDialog()
的结果是DialogResult.Cancel
!
下面是一个使用YesNoCancel的例子:
"退出前是否要保存更改?"
- 是-保存并退出
- No -不保存退出
- 取消-我按了意外按钮,没有退出。
我相信很容易想出一个场景,在响应"No"answers"Cancel"之间有一个明显的区别。传统上,"Cancel"应该将程序返回到开始当前一系列操作之前的状态。"No"当然没有同样的规则。
的例子:
"是否要删除10个文件中的第4个?"
是:删除文件
No:不要删除文件,继续到文件5/10
取消:退出此操作并返回到未删除任何文件状态。
我猜"Cancel"是用来中止整个操作的。如果您正在处理一个庞大的过程,例如,将一组文件从一个目录移动到另一个目录,那么您可能希望向用户询问有关特定文件的信息—例如,确认用户是否真的想移动受保护的文件。如果用户按下"No",则忽略该项并继续操作。如果用户按下"取消",您将中止整个操作(并且可能回滚前一个操作)。
当然,对于小程序或简单的情况,"Cancel"answers"No"没有区别。
下面是一个例子:
假设您正在退出带有未保存文件的应用程序,例如文字处理程序。
退出时提示:"您的文件有未保存的更改。"你想拯救他们吗?"
在本例中:
Yes =保存文件并退出
No =退出并丢失更改
Cancel =中止退出并返回到应用程序