2017-02-27 3 views
1

habe ich eine Form, und ich möchte zeigen, und meine Form verstecken, wenn ich F1 drücken, versuche ich dieses Tutorial folgen mit globalen Low-Level-Tastatur-Hook: https://www.codeproject.com/articles/19004/a-simple-c-global-low-level-keyboard-hookzeigen und verstecken Form von Tastatur C#

I 1x Form versteckt drücken , wenn ich kurz darauf erneut zeige, funktioniert das Formular nicht.

namespace MyForm 
{ 
    public partial class Form1 : MetroForm 
    {  
     public Form1() 
     { 
      InitializeComponent();     
     } 

     globalKeyboardHook gkh = new globalKeyboardHook(); 
     private void Form1_Load(object sender, EventArgs e) 
     { 
      gkh.HookedKeys.Add(Keys.F1); 
      gkh.KeyDown += new KeyEventHandler(gkh_KeyDown); 

      gkh.KeyUp += new KeyEventHandler(gkh_KeyUp);    
     } 

     void gkh_KeyUp(object sender, KeyEventArgs e) 
     { 
      this.Show(); 
      e.Handled = true;     
     } 

     void gkh_KeyDown(object sender, KeyEventArgs e) 
     { 
      this.Hide(); 
      e.Handled = true;  
     } 

     private void Form1_Closing(object sender, EventArgs e) 
     { 
      gkh.unhook(); 
     } 
    } 
} 

thx für jede Hilfe

Antwort

0

, was Sie tun, ist die Taste drücken und die Taste gleichzeitig die Freigabe, so dass es beide Ereignisse gleichzeitig auslösen, anstatt etwas tun wie dieses

public static bool flag = true; 
     public Form1() 
     { 
      InitializeComponent(); 

     } 
     globalKeyboardHook gkh = new globalKeyboardHook(); 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      gkh.HookedKeys.Add(Keys.F1); 
      gkh.KeyDown += new KeyEventHandler(gkh_KeyDown); 

     } 

     void gkh_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (flag) 
      { 
       this.Hide(); 
       flag = false; 
      } 
      else 
      { 
       this.Show(); 
       flag = true; 
      } 

      e.Handled = true; 
     } 

     private void Form1_Closing(object sender, EventArgs e) 
     { 
      gkh.unhook(); 
     } 

Sie müssen es in einem Ereignis zu behandeln, die keydown sein wird, weil Sie f1 drücken und auch ich Flag hinzugefügt, um zu überprüfen, ob das Formular ausgeblendet ist, wird es angezeigt, und wenn Formular angezeigt wird, verstecken Sie es

+0

thx funktioniert perfekt –