2009-01-30 5 views

Répondre

9

Vous pourriez envisager de modifier votre conception: déplacez au moins la logique du gestionnaire button1_Click ailleurs afin de pouvoir l'appeler où vous voulez.

+0

Malheureusement, cela semble être la seule réponse pour la plate-forme Windows Mobile. Je souhaite que MS ajoute quelque chose qui permettrait cela. Zzub –

+2

Je ne peux pas penser à une raison saine pour laquelle quelqu'un voudrait cliquer sur des boutons par programmation. –

+0

Si vous avez un bouton matériel que vous voulez cliquer sur le bouton. Cela semble être une évidence. – ctacke

0

Tout ce qui vous empêche d'invoquer simplement la méthode qui gère l'événement onClick?

+0

Pourquoi le vote à la baisse? Je peux lire d'autres réponses qui disent la même chose et n'ont pas de votes négatifs ... – Sergio

+0

Oui, je ne reçois pas non plus le downvote. Bien que, je ne conseillerais pas d'appeler l'événement button1_Click directement. Quelque chose à propos de ça ne me semble pas "propre". +1 pour équilibrer cependant. – BFree

+0

@Sergio: Je ne vous ai pas rejeté, mais votre réponse peut être lu avec un très méchant "Pourquoi n'avez-vous pas pensé à la chose la plus facile?" manière, qui n'est pas très "utile", ce que mesure un vote. –

3

Vous pouvez faire quelque chose comme ceci:

private void button1_Click(object sender, EventArgs e) 
    { 
     OnButtonClick(); 
    } 

    private void OnButtonClick() 
    { 

    } 

Ensuite, vous pouvez appeler votre OnButtonClick() où vous avez besoin.

+0

Non, PerformClick n'existe pas dans les FC. – ctacke

+0

button1_Click est encore juste une méthode. Vous pouvez l'appeler directement. –

+0

Oui, vous pouvez, mais je pense qu'il est beaucoup plus propre d'avoir une méthode qui décrit ce que vous voulez, plutôt que d'appeler button1_Click (null, new EventArgs()); – BFree

1

Pas exactement la réponse que vous cherchez probablement :::

Vous pourriez appeler le code que vous voulez exécuter, déplacer la viande du code en dehors de la méthode de gestion OnClick. La méthode OnClick peut déclencher cette méthode de la même manière que votre code.

2

La classe Control, dont hérite Button, possède la méthode OnClick, qui appelle l'événement Click. En utilisant la réflexion, vous pouvez appeler cette méthode, même si elle est déclarée protégée. Par exemple, j'ai créé la méthode d'extension suivante:

public static void PerformClick(this Control value) 
    { 
     if (value == null) 
      throw new ArgumentNullException(); 

     var methodInfo = value.GetType().GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance); 
     methodInfo.Invoke(value, new object[] { EventArgs.Empty }); 
    } 

Bien, cela peut être considéré comme un sale hack ...

0

Vous pouvez appeler la fonction de gestionnaire d'événements ajouté comme:

someControl_EventOccured(someControl, new EventArgs()); 

Cela fonctionne lorsque l'argument e de l'événement du contrôle n'est pas utilisé à l'intérieur de la fonction de gestionnaire et qu'il n'est généralement pas utilisé.

Questions connexes