Zum Inhalt

AppHelp

Hilfesysteme in Windows Forms

Eine der wichtigsten Hilfestellung, die Sie als Entwickler von Anwendungen Ihren Benutzern bieten können, ist ein kompetentes Hilfesystem. Hier finden sie Hilfe, wenn sie verunsichert oder ratlos sind. Die Bereitstellung eines Hilfesystems in einer Windows-basierten Anwendung ist mit der HelpProvider-Komponente ganz einfach.

Verschiedene Arten von Hilfe

Die Windows Forms HelpProvider-Komponente wird verwendet, um eine HTMLHelp 1.x-Hilfedatei (entweder eine mit HTMLHelp Workshop erstellte CHM-Datei oder eine HTM-Datei) mit Ihrer Windows-basierten Anwendung zu verknüpfen. Die HelpProvider-Komponente kann verwendet werden, um kontextsensitive Hilfe für Steuerelemente in Windows Forms oder bestimmte Steuerelemente bereitzustellen. Darüber hinaus kann die HelpProvider-Komponente eine Hilfedatei in bestimmten Bereichen öffnen, z. B. auf der Hauptseite eines Inhaltsverzeichnisses, in einem Index oder in einer Suchfunktion. Informationen zur Verwendung der HelpProvider-Komponente zum Anzeigen von Popup-Hilfe in Windows Forms finden Sie unter AppHelp Pop-Up. Informationen zur Verwendung der ToolTip-Komponente zum Anzeigen von Steuerelement-Hilfe finden Sie unter AppHelp ToolTip.

Sie können HTML-Hilfedateien 1.x mit dem HTMLHelp Workshop oder anderen Tools erstellen. Weitere Informationen zu HTML-Hilfe finden Sie unter „HTMLHelp Workshop“ oder in den anderen HTMLHelp-Themen auf dieser Website.

Das folgende Bildschirmfoto zeigt beispielhaft das Hilfefenster des Freeware-Programms 7-Zip. Mit diesem Programm lassen sich übrigens auch Hilfedateien im CHM-Format extrahieren.

Hilfe Beispiel 7-Zip

Einfache Anwendungshilfe einbinden

Es gibt ein System.Windows.Forms.Help Objekt, das mit der HelpProvider Komponente zusammen arbeitet, um CHM oder HTML Help Dateien anzuzeigen. Sie können es im "Hilfe" Menü des Formulars verwenden. Um in Ihrer Anwendung Hilfe anzubieten, rufen Sie die ShowHelp und ShowHelpIndex Methoden auf. Das Help Objekt ist eine statische Klasse, die die HTMLHelp 1.x Funktionen kapselt, sie kann nicht instanziert werden und ihre Methoden müssen direkt aufgerufen werden.

Ziehen Sie in Visual Studio eine HelpProvider-Komponente aus der Toolbox auf Ihr Formular. Als Komponente wird sie in der Leiste am unteren Rand des Windows Forms Designers angezeigt.

HelpProvider IDE

Die CHM-Hilfedatei deines Projektes kann in einem Unterverzeichnis gespeichert und mit der Anwendung ausgeliefert werden. Für die Verwendung als Anwendungshilfe ist der HelpNameSpace zweckmäßig im FrmMain_Load entsprechend zu setzen.

Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    '--- Set HelpNamespace to the CHM help file located in the /hlp subdirectory
    HelpProvider1.HelpNamespace = Replace(Application.StartupPath.ToString, "\bin", "") & "\hlp\CHM-example.chm"
    HelpProvider1.SetShowHelp(Me, True)
    ...

Die CHM Datei mit geöffnetem Inhaltsregister anzeigen

AppHelp CHM Inhalt

Fügen Sie den folgenden Code im Click Ereignis des Menüelements ein:

Private Sub MnuHelpContents_Click(sender As Object, e As EventArgs) Handles MnuHelpContents.Click
    '--- Show the contents of the help file.
    Help.ShowHelp(Me, HelpProvider1.HelpNamespace)
End Sub

Die CHM Datei mit geöffnetem Indexregister anzeigen

AppHelp CHM Index

Fügen Sie den folgenden Code im Click Ereignis des Menüelements ein:

Private Sub MnuHelpIndex_Click(sender As Object, e As EventArgs) Handles MnuHelpIndex.Click
    '--- Show index of the help file.
    Help.ShowHelpIndex(Me, HelpProvider1.HelpNamespace)
End Sub

Die CHM Datei mit geöffneter Suchregister anzeigen

AppHelp CHM Suche

Fügen Sie den folgenden Code im Click Ereignis des Menüelements ein:

Private Sub MnuHelpSearch_Click(sender As Object, e As EventArgs) Handles MnuHelpSearch.Click
    '--- Show the search tab of the help file.
    Help.ShowHelp(Me, HelpProvider1.HelpNamespace, HelpNavigator.Find, "Basic")
End Sub

Aufruf über die ContextID

AppHelp CHM ContextID

Fügen Sie den folgenden Code im Click Ereignis des Menüelements ein:

Private Sub ShowHelpTopicIDToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ShowHelpTopicIDToolStripMenuItem.Click
    '--- old workaround through Ken COX [MVP] was: &HF = 15 = HH_HELP_CONTEXT
    '--- This works only with Option Strict OFF !!
    '    Dim iContextID As Integer
    '    iContextID = 10010
    '    Help.ShowHelp(Me, Me.hlpProvider1.HelpNamespace, &HF, iContextID)
    '--- fixed in .NET 2.0 by new member HelpNavigator.TopicId
    Dim iContextID As String
    iContextID = "10010"
    '--- Show CHM contents tab and a special topic by TopicID -----
    Help.ShowHelp(Me, HelpProvider1.HelpNamespace, HelpNavigator.TopicId, iContextID)
End Sub