Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 最大化/最小化表单,两种键控方法不起作用_C# - Fatal编程技术网

C# 最大化/最小化表单,两种键控方法不起作用

C# 最大化/最小化表单,两种键控方法不起作用,c#,C#,我正在尝试获取一个WPF表单,以便在按下“enter”时最大化或最小化。但是,在调试时,它不起作用。 我可以这样写,它可以最小化,但不能最大化,但不能在执行一个操作后同时执行这两个操作

我正在尝试获取一个WPF表单,以便在按下“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;
         } 
    }
}
像这样试试

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;
         }
    }
}
像这样试试

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;
         }
    }
}

一旦最小化,应用程序将不会引发或响应诸如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;
            }
        }
    }

一旦最小化,应用程序将不会引发或响应诸如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;
            }
        }
    }


在尝试最小化状态之前,是否确定在
KeyDown2
中状态已最大化?对于
KeyDow
,情况也一样。尝试将
| | this.WindowState==WindowsState.Normal
添加到IFS中。仅尝试了此操作,但不幸无效。我在表单属性中指定表单以最大化方式打开,也许如果我尝试更改它?不知道我怎么会没有想到这一点,我将研究这一部分。但目前,如果程序以最大化开始,则在按下“Enter”时不会最小化。当您将调试器附加到进程、在这些事件处理程序上设置断点并逐步完成代码时会发生什么情况?至少感谢您的尝试。我不知道用这种方法还能做什么,但我真的很想让它工作。你确定在
KeyDown2
中,状态是最大化的,然后再尝试最小化它吗?对于
KeyDow
,情况也一样。尝试将
| | this.WindowState==WindowsState.Normal
添加到IFS中。仅尝试了此操作,但不幸无效。我在表单属性中指定表单以最大化方式打开,也许如果我尝试更改它?不知道我怎么会没有想到这一点,我将研究这一部分。但目前,如果程序以最大化开始,则在按下“Enter”时不会最小化。当您将调试器附加到进程、在这些事件处理程序上设置断点并逐步完成代码时会发生什么情况?至少感谢您的尝试。我不知道用这种方法还能做什么,但我真的很想让它工作,即使这里有不同的问题,我认为使用一个处理程序切换
WindowState
比两个处理程序的调用顺序无法保证要好。程序一旦最小化,仍然无法最大化。也许只有我一个人,这可能对OP有效。@Adrian我同意,我采取了一种非常复杂的方法。谢谢你,Ivan,这对最大化非常有效,现在我只需要使用热键,在最小化的同时读取按键。至少我这么认为。。。。我想我会看到最小化可能是个问题。。。我不太确定程序在最小化时是否能接收键盘输入,因为最小化会消除它的焦点。如果您将
最小化
替换为
正常
,它现在可以完美地使用这种方法。我猜这是因为一旦最小化,程序就不会监听按键事件。即使这里有不同的问题,我认为使用一个处理程序切换
WindowState
比两个处理程序的调用顺序无法保证要好。程序一旦最小化,仍然无法最大化。也许只有我一个人,这可能对OP有效。@Adrian我同意,我采取了一种非常复杂的方法。谢谢你,Ivan,这对最大化非常有效,现在我只需要使用热键,在最小化的同时读取按键。至少我这么认为。。。。我想我会看到最小化可能是个问题。。。我不太确定程序在最小化时是否能接收键盘输入,因为最小化会消除它的焦点。如果您将
最小化
替换为
正常
,它现在可以完美地使用这种方法。我猜这是因为一旦最小化,程序就不会监听按键事件。