在dll中为对象提供来自另一个项目的click方法

时间:2013-12-19 08:16:15

标签: c#

是否可以在另一个项目的dll中为一个类添加一个click方法? 我想在类库中创建一个类(Class1)并从中构建一个dll 我将在一个参考dll的项目中使用该类。

这是我的班级(Class1)

public class Class1
{
    public ImageMap map = null;
    public Class1(Form f)
    {
        map = new ImageMap();

        map.RegionClick += f.RegionMap_Clicked;
    }
}

这是我在另一个项目中的表格(Form1)。

public partial class Form1 : Form
{
    Class1 c = null;

    public Form1()
    {
        InitializeComponent();

        c = new Class1(this);
    }

    void RegionMap_Clicked(int index, string key)
    {
        MessageBox.Show(key);
    }
}

这是我第一次问这里。所以,对不起,如果我的英语不好。

3 个答案:

答案 0 :(得分:0)

是的,可以,不要忘记让你的处理程序公开:

public void RegionMap_Clicked(int index, string key)
{
    MessageBox.Show(key);
}

答案 1 :(得分:0)

你应该这样做

public class Class1
{
    public ImageMap map = null;
    public Class1(Form1 f)
    {
        map = new ImageMap();

        map.RegionClick += f.RegionMap_Clicked;
    }
}

然后

public partial class Form1 : Form
{
    Class1 c = null;

    public Form1()
    {
        InitializeComponent();

        c = new Class1(this);
    }

    public void RegionMap_Clicked(int index, string key)
    {
        MessageBox.Show(key);
    }
}

当然你应该为这个组件添加使用。

我认为现在它会运作良好

答案 2 :(得分:0)

Class1可以独立于Form1:

public class Class1
{
    public ImageMap Map = null;

    public Class1()
    {
        this.Map = new ImageMap();
    }
}

Form1使用Class1但它喜欢:

public partial class Form1 : Form
{
    private Class1 c = null;

    public Form1()
    {
        InitializeComponent();

        this.c = new Class1();
        this.c.Map.RegionClick += this.RegionMap_Clicked;
    }

    private void RegionMap_Clicked(int index, string key)
    {
        MessageBox.Show(key);
    }
}

因此,只有Form1项目需要对Class1项目的引用。