2010-06-23 4 views
1

, B는외부 클래스에서 처리 할 내부 클래스의 이벤트 발생, 수행 방법? 나는 클래스 A가

class A 
    { 
     public class B 
     { 
      public event EventHandler handleClick; 
      public void eventraising(object sender, EventArgs e) 
      { 
       if (handleClick != null) 
        handleClick(this, e); 
      } 
     } 

     //handle raised event here 
    } 

나는이

+0

그런데 모범 사례에서는 이벤트를 클릭 (아래의 다른 주석 참조)이라고해야하며, 이벤트 발생 방법은 OnClick이라고하며 가상 클래스 여야 자식 클래스에 의해 재정의 될 수 있다고합니다. sender 매개 변수는 이벤트 처리기에 전달할 때 필요하지 않습니다 (좋은 점). –

답변

2

A 등급은의 예를를 필요 B 어딘가 먼저. .NET에서 클래스를 중첩하는 것은 단순히 유형을 구성하는 방법입니다. 인스턴스의 소유권을 의미하지는 않습니다.

class A 
{ 

    private B instanceOfB; 

    // constructor 
    public A() { 
     instanceOfB = new B(); 
     instanceOfB.handleClick += instanceOfB_handleClick; 
    } 

    // event handler 
    private void instanceOfB_handleClick(object sender, EventArgs e) { 
     // blah 
    } 

    public class B 
    { 
     public event EventHandler handleClick; 
     public void eventraising(object sender, EventArgs e) 
     { 
      if (handleClick != null) 
       handleClick(this, e); 
     } 
    } 

} 

또한, 이벤트 그냥 호출 할 필요가 클릭하지 handleClick :

그래서 당신은 뭔가를해야 할 것입니다.

0

당신은 A에서 B의 인스턴스를 필요로 할 수있는 방법

class A 
{ 
    B b = new B; 

    A() 
    { 
     b.handleClick += (sender, ev) => { ... } 
    } 
} 
관련 문제