2009-05-28 8 views
0

J'ai créé un clavier de contrôle utilisateur ... lorsque vous cliquez sur un bouton dans le clavier de l'événement button_click est lancé et une chaîne est d'obtenir un exemple de paramètres en cliquant sur le bouton Cattraper un événement de contrôle utilisateur

CButton_Click 
{ 
txt="C"; 
} 

Je dois attraper cet événement hors du contrôle de l'utilisateur ... de sorte qu'en cliquant sur le bouton une zone de texte est remplie avec la chaîne ... donnant l'impression que la texbox se remplit pendant que l'utilisateur clique sur les boutons ..

Ceci est destiné à une application sur écran tactile.

Répondre

3

Vous devez déclarer votre propre événement dans UserControl et déclencher l'événement si nécessaire. En utilisant votre exemple:

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()); 
} 

Ensuite, vous pouvez vous inscrire à l'événement ButtonClicked du UserControl d'un autre code.

Une meilleure façon, cependant, pourrait être de créer vos propres EventArgs et de passer la chaîne dans l'événement lui-même au lieu de simplement stocker la dernière touche dans un champ. Quelque chose comme le suivant:

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 pour l'approche eventargs personnalisée –

+0

Bonne réponse. :-) – Cerebrus

+0

Merci, j'ai fait comme vous l'avez dit .. et cath la chaîne directement .. enregistré de la mémoire .. et maintenant ça marche – Dabiddo

Questions connexes