Recherche…


Remarques

Vous pouvez fournir une aide pour les formulaires et les contrôles dans une application Windows Forms de différentes manières. Vous pouvez afficher une aide contextuelle, ouvrir un fichier CHM ou une URL. Vous pouvez afficher une aide contextuelle pour les formulaires, les contrôles et les boîtes de dialogue.

Composant HelpProvider

Vous pouvez configurer un composant HelpProvider pour fournir une aide contextuelle pour le composant. De cette façon, lorsque l'utilisateur appuie sur la touche F1 ou sur le bouton Aide du formulaire, vous pouvez automatiquement:

  • Afficher une fenêtre contextuelle d'aide contextuelle pour les contrôles
  • Ouvrez un fichier CHM en fonction du contexte (Afficher la table des matières, Afficher un mot-clé ou un index, afficher un sujet)
  • Accédez à une URL à l'aide du navigateur par défaut

Classe d'aide

Vous pouvez utiliser la classe d' Help dans le code pour fournir ce type d'aide:

  • Afficher une fenêtre d'aide pour un contrôle
  • Ouvrez un fichier CHM en fonction du contexte (Afficher la table des matières, Afficher un mot-clé ou un index, afficher un sujet)
  • Accédez à une URL à l'aide du navigateur par défaut

Evénement HelpRequested

Vous pouvez gérer l'événement HelpRequested des objets Control ou Form pour effectuer des actions personnalisées lorsque l'utilisateur appuie sur F1 ou sur le bouton Aide du formulaire.

Bouton d'aide du formulaire

Vous pouvez configurer le Form pour afficher le bouton Aide sur la barre de titre. De cette façon, si l'utilisateur clique sur le bouton Aide, le curseur se transforme en un ? Après avoir cliqué sur un point, toute aide contextuelle associée au contrôle utilisant HelpProvider sera HelpProvider .

Bouton d'aide de MessgeBox et CommonDialogs

Vous pouvez fournir une aide pour MessageBox , OpenFileDialog , SaveDialog et ColorDialog utilisant le bouton Aide des composants.

Composant ToolTip

Vous pouvez utiliser le composant ToolTip pour afficher du texte d'aide lorsque l'utilisateur pointe des contrôles. Une ToolTip peut être associée à n'importe quel contrôle.

Remarque

Utilisation de HelpProvider et de la classe Help Vous pouvez afficher les fichiers d'aide compilés (.chm) ou les fichiers HTML au format HTML Help. Les fichiers d'aide compilés fournissent une table des matières, un index, une fonction de recherche et des liens de mots clés dans les pages. Les raccourcis ne fonctionnent que dans les fichiers d'aide compilés. Vous pouvez générer des fichiers HTML Help 1.x à l'aide de HTML Help Workshop. Pour plus d'informations sur l'aide HTML, voir "HTML Help Workshop" et d'autres rubriques d'aide HTML dans Microsoft HTML Help .

Afficher le fichier d'aide

La Help Class encapsule le moteur HTML Help 1.0. Vous pouvez utiliser l'objet d'aide pour afficher les fichiers d'aide compilés (.chm) ou les fichiers HTML au format HTML Help. Les fichiers d'aide compilés fournissent des tables des matières, des index, des recherches et des liens de mots clés dans les pages. Les raccourcis ne fonctionnent que dans les fichiers d'aide compilés. Vous pouvez générer des fichiers HTML Help 1.x avec un outil gratuit de Microsft appelé HTML Help Workshop .

Un moyen facile d'afficher un fichier d'aide compilé dans une seconde fenêtre:

C #

Help.ShowHelp(this, helpProviderMain.HelpNamespace);

VB.NET

Help.ShowHelp(Me, hlpProviderMain.HelpNamespace)

Afficher l'aide de MessageBox

Vous pouvez fournir de l'aide pour la boîte de message de différentes manières. Vous pouvez configurer un MessageBox pour afficher un bouton Help ou non. Vous pouvez également configurer MessageBox de manière à ce que lorsque l'utilisateur demande de l'aide en cliquant sur le bouton Aide ou en appuyant sur F1 , il affiche un fichier CHM ou navigue vers une URL ou effectue une action personnalisée. Voici quelques exemples dans ce sujet.

Dans tous les exemples ci-dessous, le MessageBox serait comme ceci:

MessageBox avec bouton d'aide

Afficher un fichier CHM et accéder à un mot clé (index)

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "help.chm", HelpNavigator.KeywordIndex, "SomeKeyword");

Afficher un fichier CHM et accéder à un sujet

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "help.chm", HelpNavigator.Topic, "/SomePath/SomePage.html");

Afficher un fichier CHM et parcourir la première page d'aide dans la table des matières

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "help.chm");

Ouvrez le navigateur par défaut et accédez à une URL

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0,
    "http://example.com");

Effectuez une action personnalisée lorsque vous appuyez sur le bouton Aide ou la touche F1

Dans ce cas, vous devez gérer l'événement HelpRequested du parent de MessageBox et effectuer une opération personnalisée:

private void Form1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
    // Perform custom action, for example show a custom help form
    var f = new Form();  
    f.ShowDialog();
}

Ensuite, vous pouvez afficher le bouton MessageBox avec l'aide:

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0, true);

Ou affichez-le sans bouton d'aide:

MessageBox.Show("Some Message", "Title", MessageBoxButtons.YesNoCancel,
    MessageBoxIcon.Question, MessageBoxDefaultButton.Button3, 0, false);

Afficher l'aide pour CommonDialogs

Vous pouvez fournir une aide pour OpenFileDialog , SaveFileDialog et ColorDialog . Pour ce faire, définissez la propriété ShowHelp de dialog sur true et gérez l'événement HelpRequest pour la boîte de dialogue:

void openFileDialog1_HelpRequest(object sender, EventArgs e)
{
    //Perform custom action
    Help.ShowHelp(this, "Http://example.com");
}

Remarque

  • L'événement sera déclenché uniquement si vous définissez ShowHelp sur true .
  • L'événement ne sera déclenché que par un clic sur le bouton Help et ne sera pas déclenché avec la touche F1.

Dans l'image ci-dessous, vous pouvez voir un OpenFileDialog avec un bouton d'aide:

Boîte de dialogue Ouvrir un fichier avec le bouton Aide

Gestion de l'événement EventRequested des contrôles et du formulaire

Lorsqu'un utilisateur appuie sur F1 sur un contrôle ou clique sur le bouton Aide de formulaire ( ? ) Puis clique sur un contrôle, l'événement HelpRequested .

Vous pouvez gérer cet événement pour fournir une action personnalisée lorsque l'utilisateur demande de l'aide pour des contrôles ou un formulaire.

Le HelpRequested prend en charge le mécanisme de création de bulles. Il se déclenche pour votre contrôle actif et si vous ne gérez pas l'événement et ne définissez pas la propriété Handled de son argument d'événement sur true , il se transforme en bulle jusqu'à la hiérarchie de contrôle parent.

Par exemple, si vous gérez l'événement HelpRequested du formulaire comme ci-dessous, lorsque vous appuyez sur F1, une boîte de message apparaîtra et affichera le nom du contrôle actif, mais pour textBox1 il affichera un message différent:

private void Form1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
    var c = this.ActiveControl;
    if(c!=null)
        MessageBox.Show(c.Name);
}
private void textBox1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
    hlpevent.Handled = true;
    MessageBox.Show("Help request handled and will not bubble up");
}

Vous pouvez effectuer toute autre action personnalisée, telle que la navigation vers une URL ou l'affichage d'un fichier CHM à l' Help classe d' Help .

Afficher l'aide à l'aide de la classe d'aide

Vous pouvez utiliser la classe d' Help dans le code pour fournir ce type d'aide:

  • Afficher une fenêtre d'aide pour un contrôle
  • Ouvrez un fichier CHM en fonction du contexte (Afficher la table des matières, Afficher un mot-clé ou un index, afficher un sujet)
  • Accédez à une URL à l'aide du navigateur par défaut

Afficher la fenêtre contextuelle Aide

Vous pouvez utiliser Help.ShowPopup pour afficher une fenêtre contextuelle d'aide:

private void control_MouseClick(object sender, MouseEventArgs e)
{
    var c = (Control)sender;
    var help = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, " +
               "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
    if (c != null)
        Help.ShowPopup(c, "Lorem ipsum dolor sit amet.", c.PointToScreen(e.Location));
}

Il affichera cette aide contextuelle à l'emplacement du pointeur de la souris:

entrer la description de l'image ici

Afficher le fichier d'aide CHM

Vous pouvez utiliser différentes surcharges de la méthode Help.ShowHelp pour afficher un fichier CHM et accéder à un mot-clé, un sujet, un index ou une table de contenu:

Afficher la table des matières de l'aide

Help.ShowHelp(this, "Help.chm"); 

Afficher l'aide pour un mot clé spécifique (index)

Help.ShowHelp(this, "Help.chm", HelpNavigator.Index, "SomeKeyword");

Afficher l'aide pour un sujet spécifique

Help.ShowHelp(this, "Help.chm", HelpNavigator.Topic, "/SomePath/SomePage.html");

Afficher l'URL

Vous pouvez afficher n'importe quelle URL dans le navigateur par défaut à l'aide de la méthode ShowHelp :

Help.ShowHelp(this, "Http://example.com");

Afficher le bouton d'aide sur la barre de titre du formulaire

Vous pouvez afficher un bouton d'aide sur la barre de titre d'un Form . Pour ce faire, vous devriez:

  1. Définissez la propriété HelpButton du formulaire sur true .
  2. Définissez MinimizeBox et MaximizeBox sur false .

Ensuite, un bouton d'aide apparaîtra sur la barre de titre du Form :

entrer la description de l'image ici

De plus, lorsque vous cliquez sur le bouton Aide, le curseur devient un ? le curseur:

entrer la description de l'image ici

Si vous cliquez ensuite sur un Control ou un Form , l'événement HelpRequested sera HelpRequested et si vous avez configuré un HelpProvider , l'aide du contrôle sera affichée à l'aide de HelpProvider .

Créer un bouton d'aide personnalisé qui agit comme un bouton d'aide standard

Si vous avez un Form avec MinimizeBox et MaximizeBox défini sur true , vous ne pouvez pas afficher le bouton Aide sur la barre de titre de Form et vous perdrez la fonction de cliquer sur le bouton d'aide pour le convertir afin de pouvoir cliquer sur les contrôles. montrer de l'aide.

Vous pouvez faire un élément de menu sur MenuStrip agir comme bouton d'aide standard. Pour ce faire, ajoutez un MenuStrip au formulaire et ajoutez-y un ToolStripMenuItem , puis gérez l'événement Click de l'élément:

private const int WM_SYSCOMMAND = 0x0112;
private const int SC_CONTEXTHELP = 0xF180;
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
private void helpToolStripMenuItem_Click(object sender, EventArgs e)
{
    SendMessage(this.Handle, WM_SYSCOMMAND, SC_CONTEXTHELP, 0);
}

Remarque: Si vous voulez le faire en utilisant un Button , vous devez également définir button1.Capture = false; avant d'envoyer le message. Mais ce n'est pas nécessaire pour un ToolStripMenuItem .

Ensuite, lorsque vous cliquez sur le menu d'aide, le curseur sera remplacé par ? curseur et agira comme lorsque vous cliquez sur le bouton d'aide standard:

Bouton d'aide personnalisé

Gestion de l'événement HelpButtonClicked de formulaire

Vous pouvez détecter lorsqu'un utilisateur a cliqué sur un HelpButton d' HelpButton sur la barre de titre du formulaire en gérant HelpButtonClicked . Vous pouvez laisser l'événement continuer ou l'annuler en définissant la propriété Cancel de ses arguments d'événement sur true .

private void Form1_HelpButtonClicked(object sender, CancelEventArgs e)
{
    e.Cancel = true;
    //Perform some custom action
    MessageBox.Show("Some Custom Help");
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow