Au clic sur F1 Ouvrir un formulaire d'aide [Résolu]

Messages postés
70
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
21 juin 2011
- - Dernière réponse : 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.
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
22
3
Merci
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é. -

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 140 internautes nous ont dit merci ce mois-ci

Commenter la réponse de krimog
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
22
0
Merci
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é. -
Commenter la réponse de krimog
Messages postés
70
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
21 juin 2011
0
Merci
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();
}

}

}
}
Commenter la réponse de cs_Juju1988
Messages postés
70
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
21 juin 2011
0
Merci
Je me suis trompée dans le copier coller je fais bien un Keys.F1
Commenter la réponse de cs_Juju1988
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
22
0
Merci
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é. -
Commenter la réponse de krimog
Messages postés
70
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
21 juin 2011
0
Merci
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 ...
Commenter la réponse de cs_Juju1988
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
22
0
Merci
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é. -
Commenter la réponse de krimog
Messages postés
70
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
21 juin 2011
0
Merci
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...
Commenter la réponse de cs_Juju1988
Messages postés
70
Date d'inscription
jeudi 8 janvier 2009
Statut
Membre
Dernière intervention
21 juin 2011
0
Merci
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.
Commenter la réponse de cs_Juju1988