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

C# 如何在C中显示类库中的自定义用户控件#,c#,events,C#,Events,我对使用类库编程相当陌生,我认为我的问题有点复杂 我正在开发自己的异常记录器。此异常记录器具有静态例程和函数,因此我不必在其他每个类中声明它。(顺便说一句,这是个好主意吗?:/)每当出现问题时,就会在异常记录器类中调用一个例程。此例程根据我传递给它的数字确定错误消息应该是什么 我的目标如下: 异常记录器应在GUI中触发事件。GUI中的事件随后显示一个定制的消息框,其中包含错误消息。我知道在GUI中用with events声明异常记录器的可能性,但是在exception logger类中没有任何东

我对使用
类库编程相当陌生,我认为我的问题有点复杂

我正在开发自己的异常记录器。此异常记录器具有
静态
例程和函数,因此我不必在其他每个类中声明它。(顺便说一句,这是个好主意吗?:/)每当出现问题时,就会在异常记录器类中调用一个例程。此例程根据我传递给它的数字确定错误消息应该是什么

我的目标如下:

异常记录器应在GUI中触发事件。GUI中的事件随后显示一个定制的消息框,其中包含错误消息。我知道在GUI中用
with events
声明异常记录器的可能性,但是在exception logger类中没有任何东西是静态的



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


编辑2:让我举个例子。我有一个名为
Base
类库。此类库包含一个名为
ExceptionLogger
类。这个类依次有一个名为
Log
静态例程

因此,我在主
项目中有一个名为Base的
.dll
作为
参考
,名为
GUI
。GUI有一个
窗体
主窗口
和两个
名为
产品
客户

我想要的是,例如,类Customer遇到一个
错误(通过使用
Try…Catch
),并且在Catch部分
Base.Log(1)
ExceptionLogger
中的
Log
例程将查找错误消息,并在GUI的
main窗口中触发事件,显示
用户自制消息框

真正的问题是,如何将此事件从
日志
激发到
主窗口



编辑3:编辑2中的
用户制作的MessageBox
是一个覆盖
主窗口的
面板,而不是打开的MessageBox窗口。

我自己找到了解决方案。欢迎任何评论。tnx已经发送给ppl,ppl评论或发布了答案

这是一个例子,我一直在寻找,它的工作

这是我的DLL(命名空间基):

这是我的
主窗口中的代码

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());
    }
}

你的问题我不清楚。你到底有什么问题?获取事件,控件的实际显示(MessageBox?)我正在寻找一种方法,从同一解决方案中
类库中的
ExceptionLogger
类触发GUI项目中的事件,而不在GUI项目中的每个类中声明类ExceptionLogger。希望这能澄清问题?为什么需要在每个控件中注册它?你的目的是什么?在帖子中添加了更多信息(编辑2)
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());
    }
}