Mehrfachaufrufe beim Windows-Nachrichten abfangen in C#

Jan79

Grünschnabel
Hallo,

mir stellt sich folgendes C# Problem: beim Abfangen von Windows-Nachrichten (mittels des unten stehenden Codes) kommt es zu Mehrfachaufrufen.

Da ich leider keine andere Möglichkeit (wie Key-Press usw.) habe, würde mich interessieren, wie ich dieses Problem beheben kann.

[DllImport("user32.dll")]
private static extern short GetAsyncKeyState(int key);

protected override void WndProc(ref Message m)
{
const int WM_GETDLGCODE = 0x87;

if (m.Msg == WM_GETDLGCODE)
if (GetAsyncKeyState(0x09) != 0) //TABULATOR
{
insertIntoList(m.Msg.ToString()); /* HIER FINDET DER MEHRFACH-AUFRUF STATT, INSGESAMT SIND ES BEI MIR 4 AUFRUFE DER METHODE insertIntoList */
}​
base.WndProc(ref m);​
}

Wäre für eine gute, schnelle Lösung dieses Problems sehr dankbar, Gruß, Jan
 
warum nicht direkt KeyUp, KeyDown oder KeyPress Events des Formulars auswerten?
Du musst das nur freischalten in dem du die Eigenschaft KeyPreview des Formulars auf true setzt.
 
Hallo Spyke,

vielen Dank für die schnelle Antwort!

Nach nunmehr 2 Wochen Rumgesuche habe ich die passende Lösung (dank des Tipps) gefunden.

protected override bool ProcessTabKey(bool forward)
{
if (BEDINGUNG)
{
insertIntoList(TEXT);
return false;​
}
return base.ProcessTabKey(forward);​
}


Nochmals Danke, Gruß, Jan :)
 

Neue Beiträge

Zurück