Tastatur-Modifikatoren beim Anwendungsstart
Frage
Ich wollte, ob eine Zusatztaste zur Erfassung wurde beim Anwendungsstart gedrückt werden (um zu bestimmen, Vollbild oder Fenstermodus).
Im Hauptfenster Konstruktor Ich habe versucht, die Überprüfung der DispatcherTimer und für Verschiebung in seinem Tick-Ereignisse zu überprüfen. Das ist, scheint gut zu funktionieren.
Die Frage ist, ist dies der beste (einzige) Weg, dies zu tun? Und warum der Schlüssel nicht den richtigen Wert im Fenster Konstruktor zurückgeben?
Lösung
Keyboard.Modifiers
ist das richtige Klasse / Objekt zu verwenden.
Ich würde vorschlagen, die Modifikatoren in einem Handler für das FrameworkElement.Loaded
Ereignis zu überprüfen.
Im Window
Konstruktor nach InitializeComponent()
:
this.Loaded += new RoutedEventHandler(Window_Loaded);
Und:
void Window_Loaded(object sender, RoutedEventArgs e)
{
// Examine Keyboard.Modifiers and set fullscreen/windowed
if ((Keyboard.Modifiers & ModifierKeys.Shift) > 0)
{
//SetFullscreen();
}
}
Andere Tipps
Ich wette Keyboard.Modifiers
GetKeyState
unter der Decke verwendet, die wahrscheinlich nicht funktioniert, bis die Nachrichtenschleife seine erste Nachricht versendet hat. GetAsyncKeyState
würde für Sie arbeiten (über P / Invoke Ich denke, es sei denn, es gibt eine .net Weg, es zu nennen, dass ich weiß, über nicht).
Große Zusammenfassung ... die zweite Verbindung hat großen Code es in dem Prozess zu zeigen, ... Nur Josh hinzufügen G-Code (aus der Antwort auf diese Frage an das Projekt im zweiten Link):
Im Fensterbauer nach InitializeComponent ():
this.Loaded += new RoutedEventHandler(Window_Loaded);
Und:
void Window_Loaded(object sender, RoutedEventArgs e)
{
// Examine Keyboard.Modifiers and set fullscreen/windowed
if ((Keyboard.Modifiers & ModifierKeys.Shift) > 0)
{
MessageBox.Show("The Window is Shifty...");
}
}