0

情况如下:我在我的程序中调用了一个void函数,它提供了一个带有OK和Cancel的消息框,但是这个函数被封装了。我需要知道用户点击了什么。

那么无论如何我是否劫持了这个功能来了解用户的选择?

或者我觉得程序员写这个函数的时候,用户点击Cancel的时候一定是返回一个void,而用户点击OK的时候什么都没有返回。我是否可以区分这两个动作 - 返回 void 并且不返回任何内容?

我知道这似乎是不可能的,但这就是为什么我来stackoverflow问你们。

谢谢

4

2 回答 2

2

返回 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 时所做的任何更改,例如:

  • 如果只有在按下 OK 时才将记录添加到数据库中,请检查该记录
  • 如果对象的状态发生变化,请检查该变化:

    OtherObject.SetValueIfOK(2);
    if (OtherObject.GetValue() == 2)
    {
        // OK was clicked
    }
    else
    {
        // Cancel was clicked
    }
    

其他任何事情,我认为您可能不走运。

于 2012-06-30T18:38:56.747 回答
0

“返回 void”(你会写return;)与不返回任何内容完全相同。

您想返回类似DialogResult. .NET 框架使用DialogResult.OKDialogResult.Cancel经常用于您想做的事情。

于 2012-06-30T18:32:01.057 回答