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?

War es hilfreich?

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...");
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top