使用两种KeyDown方法最大化/最小化表单不起作用

时间:2013-05-13 03:40:58

标签: c#

我正在尝试获取WPF表单,以便在按下“enter”时最大化或最小化。但是,在调试时,它不起作用。  我可以这样写,这样它可以最小化但不能最大化,但是一旦执行一个动作就不能同时做到这两点。
如果有人能够把我推向正确的方向,我将不胜感激。
我目前正在使用“Enter”作为占位符,因为我还没有决定使用两个键的组合。我知道,对某些人来说可能很烦人,但此刻它对我有用。
另外,我正在尝试制作一个可以在后台运行的通用叠加程序,并在按下组合键时弹出。

private void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
    if (this.WindowState == WindowState.Minimized)
    {
        if (e.Key == Key.Enter)
        {
            this.WindowState = WindowState.Maximized;
        }
    }
}
private void MainWindow_KeyDown2(object sender, KeyEventArgs e)
{
    if (this.WindowState == WindowState.Maximized)
    {
         if (e.Key == Key.Enter)
         {
             this.WindowState = WindowState.Minimized;
         } 
    }
}

2 个答案:

答案 0 :(得分:3)

尝试这样

private void MainWindow_KeyDown(object sender, KeyEventArgs e)
{        
    if (e.Key == Key.Enter)
    {
         if (this.WindowState == WindowState.Minimized)
         {
             this.WindowState = WindowState.Maximized;
         }
         else
         {
             this.WindowState = WindowState.Minimized;
         }
    }
}

答案 1 :(得分:1)

一旦最小化,应用程序将不会引发或响应KeyDown等事件。

但是,当它处于正常或最大化的视图状态时,它可以正常工作:

private void Form1_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            if (this.WindowState == WindowState.Normal)
            {
                this.WindowState = WindowState.Maximized;
            }
            else
            {
                this.WindowState = WindowState.Normal;
            }
        }
    }