2011-10-21 2 views
1

나는 두 가지 구성 요소 UserControll 및 호출 텍스트 상자 이벤트

public System.Windows.Forms.ComboBox innerComboBox; 
public System.Windows.Forms.TextBox innerTextBox; 

그리고 난이 UserControl을 사용하고 때 내가 렸기 때문에

myName.Validation += new System.ComponentModel.CancelEventHandler(myName_Validating); 

같은 검증 이벤트를 호출 할 수있다 UserControl을 가지고 작동 안함. 나는 그것을 좋아해야한다.

myName.innerTextBox.Validating += new System.ComponentModel.CancelEventHandler(myName_Validating); 

TextBox의 innerTextBox에서 모든 이벤트를 호출하는 UserControl을 재정의 할 수 있습니까? 당신의 UserControl에서

답변

2

, 이런 식으로 추가하려고 : 당신이 원하는 것처럼

public new event CancelEventHandler Validating { 
    add { innerTextBox.Validating += value; } 
    remove { innerTextBox.Validating -= value; } 
} 

이 그런 다음 myName.Validating 작동합니다.

+0

감사합니다. LarsTech. 바로 시도 할 것이다. – mbrc

2

아니요.하지만 일부 방법으로이를 "줄 바꿈"할 수 있습니다. 즉, 외부 사용자가 가입 할 수있는 최상위 사용자 정의 컨트롤에서 이벤트를 노출 한 다음 내부 컨트롤 짝수 핸들러에 가입해야합니다. 최상위 레벨 가입자에게 "알려"주십시오. 예를 들어 ...

public class MyControl 
{ 
    public event CancelEventHandler Validating; 

    public System.Windows.Forms.TextBox innerTextBox; 

    public MyControl() 
    { 
     //post-instantiation stuff here 

     innerTextBox.Validating += myName_Validating; 
    } 

    void myName_Validating(oject sender, CancelEventArgs e) 
    { 
     if (Validating != null) 
     { 
      Validating(sender, e); 
     } 
    } 
} 

정확히 어떻게 감싸고 싶은지는 당신에게 달려 있습니다. 최상위 구독을 퍼블리싱하고 실행하기 전에 (핸들링 상황에서 유용 할 수 있습니다) 컨트롤을 처리하기를 원한다면 LarsTech가 제안하는 것보다 더 간결하고 실용적인 접근 방식이 될 것입니다.

+0

미스터 실망. 감사합니다. 바로 시도 할 것이다. – mbrc

관련 문제