C# Event weiterleiten

Yuuri

Fleet Admiral
Registriert
Okt. 2010
Beiträge
13.928
Hallo zusammen,

mich plagt gerade ein nerviger Bug. Und zwar binde ich gerade Global Shortcuts in eines meiner Programme ein und nutze dafür eine Klasse von hier, welche auch wunderbar funktioniert.

Drumherum habe ich ein kleines Usercontrol erstellt, womit sich das Zeug leicht konfigurieren lässt. Doch hapert es leider beim EventHandler, denn dieser wird durch das Control doppelt aufgerufen.

Binde ich den Handler direkt an das Pressed-Event der Klasse an, funktioniert es wie gewollt, binde ich es an das Control und dieses registriert es beim Objekt, wird die Methode doppelt aufgerufen.

Vielleicht mal etwas Code:
Code:
// Form - funktioniert
public MainForm()
{
  keyInputControl1._Hotkey.Pressed += new HandledEventHandler( keyInputControl1_HotkeyPressed ); // funktioniert, testweise den Hotkey auf public gesetzt
}

// per Event auf dem Control zugewiesen, wird es doppelt aufgerufen

// UserControl
public partial class KeyInputControl : UserControl
{
  public event HandledEventHandler HotkeyPressed;
  
  private void ReregisterHotkey( object sender, EventArgs e )
  {
    if( HotkeyPressed != null ) _Hotkey.Pressed += HotkeyPressed;
  }
}

// Klasse
public class Hotkey : IMessageFilter
{
  public event HandledEventHandler Pressed;
}
Gibt es also einen Weg, den EventHandler der Hotkey-Klasse als Event des UserControls weiterzuleiten und es aber als Event im Properties-Fenster auftaucht?

LG

edit: Nach langem Suchen, hab ich nun endlich eine Lösung gefunden:
In der Klasse, welche das Event weiterleiten soll (bei mir KeyInputControl) muss das Event wiefolgt definiert werden (per add/remove):
Code:
public event HandledEventHandler HotkeyPressed
{
  add { _Hotkey.Pressed += value; }
  remove { _Hotkey.Pressed -= value; }
}
Jetzt feuert es nur ein Mal. :)
 
Zuletzt bearbeitet:
Zurück
Oben