2009-05-28 5 views
0

ユーザーコントロールのイベント...あなたはbutton_clickイベントがスローされているキーボードのボタンをクリックすると、ボタンCをクリックしたときの文字列は、パラメータの例を取得するときにキャッチ私は、ユーザーコントロールのキーボードを作成しました

CButton_Click 
{ 
txt="C"; 
} 

私はユーザーコントロールの外でそのイベントを捕らえる必要があります...ボタンをクリックすると文字列でいっぱいになります...ユーザーがボタンをクリックしている間にtexboxがいっぱいになっているという印象を与えます。

これは、タッチスクリーンアプリケーション用です。

答えて

3

UserControlで独自のイベントを宣言し、必要に応じてイベントを発生させる必要があります。あなたの例を使用する:

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

関連する問題