HelpProvider individuell mit verschiedenen Einträgen hinterlegen

  • VB.NET
  • .NET (FX) 4.0

    HelpProvider individuell mit verschiedenen Einträgen hinterlegen

    Moin,

    abseits zu einem anderen Eintrag von mir hier die Frage zu einem HelpProvider.

    Ich habe einen HelpProvider in der Form hinterlegt. Diesen den entsprechenden Elementen, beim Eintreten einer Bedingung, zuzuordnen ist kein Problem. Nun soll aber der HelpProvider auf eine Internetseite laufen.
    Dies klappt auch. Nun möchte ich aber, dass die Internetseite, je nach Element, um einen Eintrag am Ende erweitert wird.
    Sprich:

    VB.NET-Quellcode

    1. 'HelpProvider1 einer bestimmten PictureBox zuordnen und aktivieren
    2. Me.HelpProvider1.SetShowHelp(CType(Me.Controls("ProgImage" & ProgImageNr), PictureBox), True)
    3. 'die Aktion des HelpProvider1 in diesem Fall festlegen
    4. Me.HelpProvider1.SetHelpNavigator(CType(Me.Controls("ProgImage" & ProgImageNr), PictureBox), HelpNavigator.AssociateIndex)
    5. 'den Link/die Internetadresse des HelpNavigator festlegen
    6. Me.HelpProvider1.HelpNamespace(CType(Me.Controls("ProgImage" & ProgImageNr), PictureBox), ("https://www.hilfeseite.de/" & OfficeProgrammeInstalliert(i)))


    Erläuterung:
    OfficeProgrammeInstalliert(i) ist ein Array() mit festen String-Werten und funktioniert auch so
    (i) kommt als Variable aus einer FOR-Schleife, in welcher gerade dieser Codeausschnitt läuft
    ProgImageNr ist auch eine Laufzeitvariable und beinhaltet eine Zahl


    Frage:
    Kann man einem HelpProvider im HelpNamespace mehrere Werte zuordnen und später entsprechend der Indexnummer wieder ansprechen? Im Designer Modus kann ich mehrere Werte festlegen aber ich kann sie leider nicht ansprechen. (siehe Anhang)
    Oder Frage 2:
    Kann man es verhindern, dass, wenn der HelpProvider beim Aufruf der, im Help. Namespace hinterlegten Internetseite und dem anhängen des im KeyWort hinterlegten Wertes, ein # als Sprungmarken Identifizierung auf der Internetseite eingefügt wird?
    Sprich nicht "www.hilfeseite.de/#KeyWort" sondern "www.hilfeseite.de/KeyWort"

    Update:
    So ich schließe mal das Thema. Also egal wen ich frage - die Lösung für dieses Problem ist leider nicht so einfach.
    HelpProvider.HelpNamespace ist ein einzigartiger Wert im ganzen Projekt.
    Den Wert kann man zwar individuell neu belegen aber im Prinzip ist das doppelt gemoppelt und bringt nur Chaos.
    Wer also - so wie ich - immer wieder den HelpProvier.HelpNamespace mit einer Internetseite verknüpfen will, welche nicht mit einem # umgehen kann, weil eine Unterseite aufgerufen werden soll und nicht eine Sprungmarke auf der Seite verwendet wird, wird nicht drumherum kommen das ClickEvent für das Objekt abzufangen und einzeln zu belegen, auf welchem der HelpProvider reagieren soll.
    Grund ist die Idee des HelpProvider an sich. Er ist ja eigentlich dafür gedacht eine Hilfedatei aufzurufen. Oder in der "neueren" Version eine Internetseite mit Sprungmarke zum Thema.
    Was man machen kann ist:
    Objekt wird angeklickt -> Objekt.ClickEvent (hier im Beispiel eine PictureBox) wird abgefangen und aufgrund einer Bedingung wird der komplette HelpProvider angepasst an die aktuelle Situation.
    Macht allerdings nicht viel Sinn, denn dann ist man ja bereits im ClickEvent der PictureBox. Daher ist ein eigener Hilfebutton einfacher als das vorgegebene zu nutzen.
    Kann somit eigentlich nur jedem davon abraten den Originalen HelpProvider zu nutzen wenn man ihn zu sehr spezialisieren will.

    Aber ich lasse mich gerne unterrichten falls doch noch jemand eine schlaue Idee hat. Die Daten in ein Array zu packen und dann entsprechend abzurufen ist auch nur relativ, denn das würde auf oben beschriebenes hinauslaufen.
    Bilder
    • VS-HelpProvider.png

      14,91 kB, 497×397, 42 mal angesehen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ThomasG82“ ()