下面是这种情况:我在程序中调用了一个void函数,它提供了一个带OK和Cancel的消息框,但这个函数是封装的。我需要知道用户点击了什么。
那么我是否劫持了这个函数以了解用户的选择?
或者我认为当程序员编写这个函数时,他必须在用户单击“取消”时返回一个void,并在用户单击“确定”时没有返回任何内容。这有可能我可以区分这两个动作 - 返回无效而不返回任何东西?
我知道这似乎不可能,但这就是为什么我来到stackoverflow问你们。
谢谢
答案 0 :(得分:2)
返回void的函数只有一个返回 - 什么都没有 - 因此返回任何内容或返回void
之间没有区别。
如果您无法更改现有功能,而它只显示一个MessageBox,我会废弃它,如果我是你就重新开始。
你想要的是:
public DialogResult GetDialogResult(string message, string caption)
{
return MessageBox.Show(message, caption, MessageBoxButtons.OKCancel);
}
使用您想要的邮件和标题调用该邮件,您将获得DialogResult.OK
或DialogResult.Cancel
如果它不仅仅显示MessageBox,您唯一的选择是检查该功能在单击OK时所做的任何更改,例如:
如果对象的状态发生变化,请检查该更改:
OtherObject.SetValueIfOK(2);
if (OtherObject.GetValue() == 2)
{
// OK was clicked
}
else
{
// Cancel was clicked
}
其他任何事情,我认为你可能运气不好。
答案 1 :(得分:0)
“返回无效”(你写return;
)与什么都不返回完全相同。
您希望返回类似DialogResult
的内容。 .NET框架经常使用DialogResult.OK
和DialogResult.Cancel
来完成您的工作。