2016-08-07 6 views
1

enter image description hereFokus Tasten mit gleichen Zugriffsschlüsseln statt Brennen der ersten

Pressing Alt + BFeuer die erste Schaltfläche obwohl Taste 2 den gleichen Zugriffsschlüssel hat.

Wie kann ich verwalten zu Fokus Taste 1 auf einer ersten Alt + B und Fokus Taste 2 auf einer zweiten Alt + B ohne keydown Ereignis oder eine ähnliche Handhabung?

private void button1_Click(object sender, EventArgs e) 
{ 
    System.Media.SystemSounds.Beep.Play(); 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    System.Media.SystemSounds.Hand.Play(); 
} 
+1

Vielleicht ein 'bool' verwenden, und überprüfen, ob es' true/false', die man zu konzentrieren, um zu entscheiden. –

Antwort

1

Sie können ProcessMnemonic außer Kraft setzen Sie das Verhalten Ihrer Schaltfläche anpassen, wenn eine Gedächtnisstütze gedrückt. Wenn Sie bei der Verarbeitung von mnemonic das Steuerelement in dem Status gefunden haben, der eine Aktion basierend auf dem mnemonischen Zeichen ausführen soll, geben Sie true zurück, andernfalls geben Sie false zurück.

In unten Implementierung, die Steuerung zuerst überprüft, ob die mnemonic gehört zur Kontrolle, dann, wenn es nicht Focuded dann ist es Focus ruft und gibt true zurück, andernfalls (es fokussiert ist oder es sollte die mnemonic nicht umgehen) gibt false zurück. Auf diese Weise ermöglicht es den Fokus zwischen Steuerelement mit demselben mnemonic:

using System.Windows.Forms; 

public class MyButton:Button 
{ 
    protected override bool ProcessMnemonic(char charCode) 
    { 
     if (this.UseMnemonic && this.Enabled && this.Visible && 
      Control.IsMnemonic(charCode, this.Text)) 
     { 
      if (!this.Focused) 
      { 
       this.Focus(); 
       return true; 
      } 
     } 
     return false; 
    } 
} 
Verwandte Themen