2010-06-17 73 views
1

我有两个类。 一个类(比如A)在c'tor中使用一个文本框。并使用私有事件处理程序方法注册TextChanged事件。 第二类(比如B)通过提供一个文本框来创建类A的对象。从外部类调用私人事件处理程序

如何从类B调用类A的私有事件处理程序?

它还注册MouseClick事件。

有什么办法可以调用私人事件处理程序吗?

回答

3

简答:不。

声明事件处理程序为公共,或更好,创建一个公共代理方法,像

public class MyClass 
{ 
    private myHandler.... 

    public returnType DoClick() { return myHandler(...); } 
} 

给予私有成员直接访问失败,宣布其私人的目的。

0

对私人用户订阅私有方法和触发事件都没有限制。你到目前为止是否有任何错误?

+0

但是A类如何调用B类的私有方法?我想以编程方式提出事件。 – Azodious 2010-06-17 14:41:59

2

创建事件处理函数和其他类都可以调用的公共方法。一般来说,直接调用事件处理程序是一个坏主意。仔细考虑你想要做什么,你应该能够找到一个更接近你想要做的概念的代码结构。你不想让其他班级点击一个按钮;你希望你的其他班级做点击按钮的事情也会做。

+1

+1很好的语义分析。如果有问题的类不是UI组件(页面或控件),它不应该公开处理程序,而是处理程序将调用的方法。 – 2010-06-17 15:03:39

相关问题