2009-05-28 4 views
0

사용자 컨트롤 이벤트 ... 당신은 button_click 이벤트가 발생합니다 키보드의 버튼을 클릭 버튼 C를 클릭 할 때 문자열 매개 변수의 예를 얻을 때캐치 나 사용자 제어 키보드를 만든

CButton_Click 
{ 
txt="C"; 
} 

나는 그 이벤트를 사용자 정의 컨트롤 밖에서 잡아야한다. 버튼을 클릭하면 텍스트 상자가 문자열로 채워진다. 버튼을 클릭하는 동안 texbox가 채워지는 느낌을 준다.

이것은 터치 스크린 응용 프로그램입니다.

답변

3

사용자 정의 컨트롤에서 사용자 정의 이벤트를 선언하고 필요한 경우 이벤트를 발생시켜야합니다. 귀하의 예제를 사용하여 :

public event EventHandler ButtonClicked; 

protected override OnButtonClicked(EventArgs e) 
{ 
    var hand = ButtonClicked; 
    if (hand != null) 
     hand(this, e); 
} 

private void CButton_Click(Object sender, EventArgs e) 
{ 
    txt = "C"; 
    OnButtonClicked(new EventArgs()); 
} 

그럼 당신은 다른 코드에서 해당 UserControl의 ButtonClicked 이벤트에 가입 할 수 있습니다.

그러나보다 나은 방법은 필드에 마지막 키 누르기를 저장하는 대신 이벤트 자체에 EventArg를 만들고 이벤트 자체에 문자열을 전달하는 것입니다. 다음과 같은 메시지가 표시됩니다.

public KeyboardEventArgs : EventArgs 
{ 
    public KeyboardEventArgs() 
     :base() 
    { 
    } 

    public KeyboardEventArgs(char Key) 
     :this() 
    { 
     this.Key = Key; 
    } 

    char Key {get; set;} 
} 

public event EventHandler<KeyboardEventArgs> ButtonClicked; 

protected override OnButtonClicked(KeyboardEventArgs e) 
{ 
    var hand = ButtonClicked; 
    if (hand != null) 
     hand(this, e); 
} 

private void CButton_Click(Object sender, EventArgs e) 
{ 
    OnButtonClicked(new KeyboardEventArgs("C")); 
} 
+0

+1 맞춤 이벤트 접근 방식 –

+0

에 대한 답변입니다. :-) – Cerebrus

+0

고마워, 내가 말했듯이 .. 그리고 칼슘 직접 문자열 .. 메모리를 저장 .. 그리고 지금은 작동 – Dabiddo