如何在C#中从类库中显示自定义用户控件

时间:2014-05-24 20:00:42

标签: c# events

我对Class Libraries编程很陌生,我认为我的问题有点复杂。

我正在使用自己的异常记录器。这个异常记录器具有static例程和函数,因此我不必在其他每个类中声明它。 (这是一个好主意吗?:/)每当出现问题时,在异常记录器类中调用例程。此例程根据传递给它的数字确定错误消息的内容。

我的目标如下:

异常记录器应该在GUI中触发事件。然后,GUI中的事件会显示一个自定义消息框,其中包含错误消息。我知道用WithEvents在GUI中声明异常记录器的可能性,但是没有在异常记录器类中保持静态的目的。


编辑1:我正在寻找一种方法在同一解决方案中从ExceptionLogger中的Class Library类触发GUI项目中的事件,而不在我的每个类中声明Class ExceptionLogger GUI项目。


编辑2:我举个例子。我有一个名为Class Library的{​​{1}}。此类库包含名为Base的{​​{1}}。此类依次为Class ExceptionLogger

所以我在我的主Static Routine中将Log命名为.dll,名为Reference。 GUI有Project GUI和2 Form名为MainWindowClasses

我想要的是,例如,Customer类遇到Product(使用Customer)和Catch部分ErrorTry...Catch中的Base.Log(1)例程将查找错误消息必须是什么,并将在显示Log的GUI ExceptionLogger中触发事件。

真正的问题是,如何将此活动从MainWindow发送到User Made MessageBox


编辑3:编辑2 中的Log更像是MainWindow,它覆盖了User Made MessageBox,而不是打开的MessageBox窗口。

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案。欢迎任何评论。已经有人评论或发表了答案。

这是我正在寻找的一个例子,它正在发挥作用。

这是我的DLL(名称空间Base):

public class ExceptionHandler
{
    public static event EventHandler ShowErrorMessage;

    public static void test(EventArgs e)
    {
        ShowErrorMessage("me", e);
    }
}

这是我MainWindow中的代码:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Base.ExceptionHandler.ShowErrorMessage += ExceptionHandler_ShowErrorMessage;
    }

    void ExceptionHandler_ShowErrorMessage(object sender, EventArgs e)
    {
        MessageBox.Show((string)sender);
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        Base.ExceptionHandler.test(new EventArgs());
    }
}