Autor Beitrag
Little_Bird
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 27.03.09 07:45 
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

ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 27.03.09 09:47 
Ich liebe diese Mehrfach-Posts, siehe dort.

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