情况如下:我在我的程序中调用了一个void函数,它提供了一个带有OK和Cancel的消息框,但是这个函数被封装了。我需要知道用户点击了什么。
那么无论如何我是否劫持了这个功能来了解用户的选择?
或者我觉得程序员写这个函数的时候,用户点击Cancel的时候一定是返回一个void,而用户点击OK的时候什么都没有返回。我是否可以区分这两个动作 - 返回 void 并且不返回任何内容?
我知道这似乎是不可能的,但这就是为什么我来stackoverflow问你们。
谢谢
情况如下:我在我的程序中调用了一个void函数,它提供了一个带有OK和Cancel的消息框,但是这个函数被封装了。我需要知道用户点击了什么。
那么无论如何我是否劫持了这个功能来了解用户的选择?
或者我觉得程序员写这个函数的时候,用户点击Cancel的时候一定是返回一个void,而用户点击OK的时候什么都没有返回。我是否可以区分这两个动作 - 返回 void 并且不返回任何内容?
我知道这似乎是不可能的,但这就是为什么我来stackoverflow问你们。
谢谢
返回 void 的函数只有一个 return - nothing - 因此返回 nothing 或返回没有区别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
}
其他任何事情,我认为您可能不走运。
“返回 void”(你会写return;
)与不返回任何内容完全相同。
您想返回类似DialogResult
. .NET 框架使用DialogResult.OK
并DialogResult.Cancel
经常用于您想做的事情。