4

如何在类库中使用 MessageBox?

这是我的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MessageBoxes
{
    class ShowInfo
    {
        MessageBox.Show("test");
    }
}

我可以加载 MessageBox 但不能有显示属性 MessageBox.Show("test"); <-- 失败

4

4 回答 4

9

您不应该类库使用Windows 窗体 MessageBox。如果您在 ASP.NET 应用程序中使用此库会怎样。MessageBox 将显示在 Webserver 中。并且您的网络服务器将等待(挂起),直到有人响应网络服务器中的 MessageBox。

一个理想的设计是您要么将消息作为字符串返回,并以调用者特定的方式处理该字符串,要么在您想要的情况下抛出异常。

如果您仍然想要,那么这里是您的代码更正

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MessageBoxes
{
    class ShowInfo
    {
        public void ShowMessage(string msg)
        {
            MessageBox.Show(msg);
        }
    }
}
于 2013-04-06T08:56:53.697 回答
1

您可以在任何方法之外调用消息框。
这段代码根本无法编译。

你应该写

namespace MessageBoxes
{
    class ShowInfo
    {
        public void ShowUserMessage(string messageText)
        {
             MessageBox.Show(messageText);
        }
    }
}

然后在实例化 ShowInfo 类型的对象后调用它

ShowInfo info = new ShowInfo();
info.ShowUserMessage("This is a Test");
于 2013-04-06T08:48:23.113 回答
1

这个问题的附加答案:

创建类库项目之后。

右键单击您的项目Add> New Item>Windows form

这是通过添加参考来完成的System.Windows.Forms.dll

于 2018-11-15T09:12:03.737 回答
0

确保您实际使用主窗体中的类。

class ShowInfo
{
    public static void show()
    {
        System.Windows.Forms.MessageBox.Show("test");
    }
}

...

    public Form1()
    {
        InitializeComponent();
        ShowInfo.show();
    }
于 2013-04-06T08:52:30.063 回答