2 qq 26534747 qq_26534747 于 2015.05.27 13:48 提问

C#同一个名称空间里,两个类,A类中有个单击事件,B类有个方法

怎么实现A中一单击就B中方法就执行?????
谢谢!!!!!!!

6个回答

caozhy
caozhy   Ds   Rxr 2015.05.27 14:04
已采纳

a.Click += new EventHandler((se, ar) => { b.方法(参数...); });

qq_26534747
qq_26534747 回复caozhy: 不给也会采纳的
2 年多之前 回复
caozhy
caozhy 回复瞪待大婶粗线: 你要是采纳了我的回答,我可以写一个简单完整的例子给你。
2 年多之前 回复
qq_26534747
qq_26534747 代码太多了= =还很复杂我想找找吧
2 年多之前 回复
caozhy
caozhy 回复瞪待大婶粗线: 你说到点子上了。如果你想知道写在哪里,你得贴出你现有的代码,不然你问我,我怎么知道。
2 年多之前 回复
qq_26534747
qq_26534747 这个写在什么位置?
2 年多之前 回复
Tiger_Zhao
Tiger_Zhao   Rxr 2015.05.27 13:54

事件不是A自己响应的,是A实例的持有者响应的。
到响应的地方去调用B实例的方法(除非是静态方法,普通方法必须有实例才能调用)。

albertbush
albertbush   2015.05.27 13:54

在a的单击事件中写:
new B().click();

qq_26534747
qq_26534747 回复不是阿尔伯特: 单击事件在A类里面不在B里
2 年多之前 回复
albertbush
albertbush 回复瞪待大婶粗线: 你不是要调用B的某个实例方法么?这个就相当于var b = new B();b.Click();两句
2 年多之前 回复
qq_26534747
qq_26534747 你这是什么?
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.05.27 14:50
 using System;
class A
{
    private EventHandler click;
    public event EventHandler Click
    {
        add { click += value; }
        remove { click -= value; }
    }
    public void PerformClick()
    {
        click(this, new EventArgs());
    }
}
class B
{
    public void foo()
    {
        Console.WriteLine("b.foo()");
    }
}
public class Test
{
    public static void Main()
    {
        A a = new A();
        B b = new B();
        a.Click += new EventHandler((se, ar) => { b.foo(); });
        a.PerformClick();
    }
}
caozhy
caozhy   Ds   Rxr 2015.05.27 14:51

http://ideone.com/bSbvN3
运行结果
b.foo()

qq_26534747
qq_26534747 我解决了,谢谢你!
2 年多之前 回复
qq_26534747
qq_26534747 回复caozhy: 太大了,我先看看,不会再找你,谢谢你啊
2 年多之前 回复
caozhy
caozhy 回复瞪待大婶粗线: 你尽量简化你的程序,打包上传到百度网盘,重新开问,我帮你看看
2 年多之前 回复
qq_26534747
qq_26534747 回复caozhy: 这个也不能放在主方法里面的,具体怎么弄
2 年多之前 回复
caozhy
caozhy 回复瞪待大婶粗线: 可以用一个static class包裹,相当于放在全局变量中。
2 年多之前 回复
qq_26534747
qq_26534747 A和B的实例不在一块怎么办,也不再主方法用不知道写在哪
2 年多之前 回复
u010357690
u010357690   2015.05.27 15:21

在A类单击事件中调用B中的方法

Csdn user default icon
上传中...
上传图片
插入图片