2009-02-06 1 views
0

J'ai une vue de grille de données à l'intérieur d'un contrôle qui est affiché dans une certaine zone dans une application.Puis-je gérer un événement key up même si la vue grille n'est pas focalisée?

J'aimerais que cette grille d'activité s'actualise lorsque F5 est pressée. Il est assez facile de le faire lorsque la vue Grille d'activités est l'élément actuellement ciblé sur l'écran en manipulant l'événement Clé en haut, mais cela ne fonctionne évidemment pas lorsqu'un autre élément (par exemple la barre de menus) est la dernière chose cela a été cliqué sur.

Existe-t-il également un moyen de suivre les touches dans ce cas? Je n'ai pas accès au code en dehors de ma vue/contrôle de ma grille de données.

La réponse à cette question peut être un non clair, mais je voulais m'assurer que je ne manquais pas quelque chose d'évident dans ce travail.

+0

Existe-t-il une méthode d'actualisation publique sur ce contrôle? Si c'est le cas, vous devriez être capable de gérer toutes les pressions F5 sur le formulaire, et il suffit d'appeler la méthode d'actualisation des contrôles. – BFree

Répondre

0

No.

Si vous n'avez pas accès aux autres contrôles qui peuvent avoir mise au point à l'époque, il n'y a aucun moyen de faire passer le message clé à partir eux à votre contrôle.

0

Vous pouvez effectuer une gestion globale des événements clavier sur le formulaire sur lequel les contrôles sont activés.

Si vous ajoutez ceci à votre formulaire, vous pouvez obtenir les événements de clé globale avant qu'ils ne soient envoyés au contrôle.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    switch (keyData) 
    { 
     case Keys.F5: 
      // Send Refesh Event To Grid 
      return true; // Mark Key As Handled 

      // Add Any Extra Command Keys Here 
    } 

    return base.ProcessCmdKey(ref msg, keyData); // Resend To Base Function 
} 
0

Avez-vous essayé de capturer l'événement sur le formulaire lui-même, puis appelez le gestionnaire d'événements pour la grille de données? Vous devrez définir KeyPreview sur true pour que le formulaire soit averti des événements de clavier.

Questions connexes