Au clic sur F1 Ouvrir un formulaire d'aide

Résolu
cs_Juju1988 Messages postés 70 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 21 juin 2011 - 9 févr. 2010 à 09:45
cs_Juju1988 Messages postés 70 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 21 juin 2011 - 9 févr. 2010 à 14:28
Bonjour,

Je cherche lorsque l'utilisateur appuie sur le bouton F1 à ouvrir un formulaire d'aide.
J'ai essayé ce code :

private void frmCommitHelp_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
frmHelp myHelpForm = new frmHelp();
myHelpForm.Show();
myHelpForm.Focus();
}

}

Mais dans résultats...

Je suis désolée si cette question à déjà été posée, je suis nouvelle sur le forum et je n'ai pas réussi à trouver ce sujet.

Merci d'avance pour votre aide.

9 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
9 févr. 2010 à 14:14
L'endroit où tu places tes contrôles de manière visuelle, où tu peux choisir les propriétés et les événements de tes contrôles / forms, c'est le mode Design. Tout ce que tu définis dans ce mode est intégré automatiquement dans le fichier designer.cs

Quant à KeyPreview, c'est étonnant que ton événement ne soit pas appelé sur la form si KeyPreview est à true.
Vérifie (dans ton mode Design) que ta form a bien frmCommitHelp_KeyDown dans l'événement KeyDown.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
9 févr. 2010 à 10:01
Tu as vérifié que tu rentrais bien dans la méthode frmCommitHelp_KeyDown ?

"Sans résultat" : Il se passe quoi ? Rien du tout ? Une erreur ?

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
cs_Juju1988 Messages postés 70 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 21 juin 2011
9 févr. 2010 à 10:59
Non il ne se passe bien. Mais je ne rentre pas dans ma méthode je pense je ne dois pas l'avoir placée au bon endroit mais je ne sais pas où la mettre (je débute en C# aussi). Voici mon programme :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class frmCommitHelp : Form
{
public frmCommitHelp()
{
InitializeComponent();
}

private void btnAide_Click(object sender, EventArgs e)
{
frmHelp myHelpForm = new frmHelp();
myHelpForm.Show();
myHelpForm.Focus();

}

private void btQuitter_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void frmCommitHelp_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Back)
{
frmHelp myHelpForm = new frmHelp();
myHelpForm.Show();
myHelpForm.Focus();
}

}

}
}
0
cs_Juju1988 Messages postés 70 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 21 juin 2011
9 févr. 2010 à 11:02
Je me suis trompée dans le copier coller je fais bien un Keys.F1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
9 févr. 2010 à 11:53
Et dans le designer.cs, tu as bien
this.KeyDown += new KeyEventHandler(frmCommitHelp_KeyDown);
?

Sinon, l'autre possibilité, c'est que si tu as, par exemple, une textbox qui a le focus, l'événement soit généré sur la textbox et pas sur la fenêtre elle-même. Dans ce cas, il faudrait que tu rajoutes un truc du genre :
maTextBox.KeyDown += new KeyEventHandler(frmCommitHelp_KeyDown);
dans le constructeur de ta fromCommitHelp (après InitializeComponent()).

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
cs_Juju1988 Messages postés 70 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 21 juin 2011
9 févr. 2010 à 12:01
Je n'ai rien mis dans designer.cs il faut que je le mette dans frmCommitHelp.Designer.cs?? C'est bien ça?? Et si oui à quel niveau??

Effectivement si je le met dans une textbox ça fonctionne, donc au pire si je ne trouve pas j'ai cette solution ...
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
9 févr. 2010 à 12:24
Le fichier Designer.cs, c'est le fichier qui est créé automatiquement quand tu crées/modifies ta fenêtre en mode Design

Mais si tu as créé directement ton événement via le designer, ça veut dire que la ligne de code dont je parlais se trouve bel et bien dans le fichier.

Mais je viens de me rappeler qu'il existe une propriété qui permet d'envoyer d'abord l'événement à la fenêtre avant de l'envoyer à la textbox (ce qui éviterait d'avoir à rajouter la gestion de l'événement sur la textbox).
this.KeyPreview = true;

(cette propriété de ta Form et peut-être même accessible directement en mode Design)

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
cs_Juju1988 Messages postés 70 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 21 juin 2011
9 févr. 2010 à 13:53
C'est à dire? Créer l'évènement via le designer? J'ai rien fait dans le designer je n'ai pas crée d'évènement.

En ce qui concerne KeyPreview, je l'ai déjà mis à true dans les propriétés de mon formulaire...
0
cs_Juju1988 Messages postés 70 Date d'inscription jeudi 8 janvier 2009 Statut Membre Dernière intervention 21 juin 2011
9 févr. 2010 à 14:28
Merci bien, il me manquait bien le
this.KeyDown += new KeyEventHandler(frmCommitHelp_KeyDown); 
dans le designer.
Je ne savais pas comment ça fonctionnait et c'est bon j'ai trouvé.
Merci beaucoup.
0
Rejoignez-nous