【问题标题】:C# MessageBox with DialogResult giving "No overload for method 'Show' takes '3' arguments"带有 DialogResult 的 C# MessageBox 给出“方法'Show'没有重载需要'3'参数”
【发布时间】:2014-09-04 06:31:10
【问题描述】:

我正在使用 Visual Studio 2008 为 Windows CE 开发应用程序。

代码:

    private void cmdLogOn_Click(object sender, EventArgs e)
      {
        if (loginStatus == false)
        {
            DialogResult dialogresult = MessageBox.Show("Are you sure?", "text", MessageBoxButtons.YesNo);
            if (dialogresult == DialogResult.Yes)
            {
                //Do Stuff;
            }
        }
        else
        {
            //Do stuff
        }
    }

我收到错误消息:“方法 'Show' 没有重载需要 '3' 个参数”。知道为什么吗?

编辑:以下是使用新应用程序演示问题的分步说明:

  1. 如你所见,我使用的是VS2008

2.Visual C# > 智能设备项目

  1. 目标平台:Windows CE - .NET Compact Framework 3.5 版

  1. 我创建了一个按钮 = button1 和一个标签 = label1

  1. 这是我输入的代码,但错误仍然存​​在

【问题讨论】:

  • 我想您需要让我们确切地知道 MessageBox 在您的代码上下文中是什么。

标签: c# visual-studio-2008 compact-framework messagebox dialogresult


【解决方案1】:

简单的答案是在 .NET Compact 框架中,正如错误所说,没有采用 3 个参数的重载。

你可以用这个:

DialogResult dialogresult = MessageBox.Show("Are you sure?", "text",
    MessageBoxButtons.YesNo, MessageBoxIcon.None, MessageBoxDefaultButton.Button1);

【讨论】:

  • 在任何其他非紧凑型框架应用程序中,我都能做到我所做的,它按你的方式工作!谢谢!
  • 是的,有很多重载可以在完整框架中工作,而在紧凑框架中却不起作用。
【解决方案2】:

一个合理的解释是你的目标是 .net 1,对于紧凑的框架,它只有一个 single MessageBox.Show method that accepts a single parameter of type string

支持compact framework for the overload that you seek to use was added in .net 2.0,至少据我从文档中可以看出。

您在 cmets 中声明您使用的是 .net 3.5。在这种情况下,唯一可以得出的合理结论是 MessageBox 必须不是 System.Windows.Forms.MessageBox,因为在紧凑框架上的 .net 3.5 中,该类具有您要调用的重载。

最后,@CathalMF 断言重载确实不存在于紧凑框架中。也许文档是错误的!

【讨论】:

  • 这应该是问题所在。同样在问题中应该有足够的信息让我们重现您的报告。由于 .net 3.5 紧凑框架支持您寻求调用的方法,因此您在问题中声称的内容并不相加。我们如何重现您报告的内容?
  • @CathalMF 根据我链接到的文档是
  • @DavidHeffernan 这是完整框架文档的链接。
  • @CathalMF 在底部它说在 Windows CE 上受支持
  • @DavidHeffernan 好的,我错过了。我猜他们的文档是错误的。
【解决方案3】:

你可以试试这样的:

MessageBox.Show("my text", "title", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation, 
    MessageBoxDefaultButton.Button1);

Source

【讨论】:

    【解决方案4】:

    你必须使用System.Windows.Forms

    System.Windows.Forms.DialogResult dialogresult = System.Windows.Forms.MessageBox.Show("Are you sure?", "text", System.Windows.Forms.MessageBoxButtons.YesNo);
    

    【讨论】:

    • 我正在使用System.Windows.Forms.DialogResult
    • 只需将我的答案复制并粘贴到您的解决方案中并尝试一下
    • 那你又犯了一些其他的错误,没有任何相关的 MessageBox
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    相关资源
    最近更新 更多