Entwickler-Ecke

WinForms - HelpRequested wird nicht aufgerufen


Little_Bird - Fr 27.03.09 08:45
Titel: HelpRequested wird nicht aufgerufen
Hallo zusammen !

Mein .Net Dialog soll mit einer kontextsensitiven Hilfe ausgestattet werden, die an ein bestimmtes HelpTopic in einer chm Datei springt, wenn der Anwender auf das Hilfe-Fragezeichen und dann auf einen beliebigen Bereich des Formulars oder darauf liegenden Controls klickt.

Dazu habe ich im Formular die Eigenschaft HelpButton auf true gesetzt und anschließend einen HelpRequested Eventhandler hinzugefügt.

Leider wird diese Funktion nur aufgerufen wenn ich direkt auf das Formular oder einen Button klicke. Sobald ich z.B. auf ein MenuStrip oder ToolStrip klicke wird mein Reaktor nicht mehr aufgerufen - auch wenn ich den HelpRequested EventHandler direkt dem ToolStrip bzw. MenuStrip zuweise.

Hat jemand von Euch eine Idee was ich falsch mache oder wie ich das lösen kann?

zum besseren Verständnis hier noch ein bisschen Code


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
... 

public FDialog()
{
  InitializeComponent();
           
        //Hilfe Einrichten
        HelpButton = true;
        AddHelpReactors();
}

/// <summary>
/// Fügt die EventHandler für das Hilfesystem hinzu
/// </summary>
        
private void AddHelpReactors()
{
       //Hilfe für den Hauptdialog
       HelpRequested += new HelpEventHandler(FDialog_HelpRequested);
 

       //Menüeinträge
       msMainMenu.HelpRequested += new HelpEventHandler(msMainMenu_HelpRequested);

       //ToolStrip
       toolStrip1.HelpRequested += new HelpEventHandler(toolStrip1_HelpRequested);
}
       
void toolStrip1_HelpRequested(object sender, HelpEventArgs hlpevent)
{
       //Wird nie aufgerufen
       CallMyHelp();
       hlpevent.Handled = true;
}

      
void msMainMenu_HelpRequested(object sender, HelpEventArgs hlpevent)
{
      //Wird nie aufgerufen
      CallMyHelp();
      hlpevent.Handled = true;
}

     
void FDialog_HelpRequested(object sender, HelpEventArgs hlpevent)
{
      //Wird nur aufgerufen, wenn ich direkt auf den Dialog klicke...
      CallMyHelp();
      hlpevent.Handled = true;
}


JüTho - Fr 27.03.09 10:47

Ich liebe diese Mehrfach-Posts, siehe dort [http://www.mycsharp.de/wbb2/thread.php?threadid=69452].

Bevor die Nachfrage kommt, was gegen Mehrfach-Posts spricht: Ich habe so oft wiederholt, dass parallel Antworten gegegen werden und es zumindest unhöflich ist, viele Helfer einzuspannen, ohne dass denen die anderen Diskussionen bekannt sind.

Jürgen