当前位置: 代码迷 >> C# >> WinForm无框方式多屏幕最大化
  详细解决方案

WinForm无框方式多屏幕最大化

热度:117   发布时间:2016-05-05 02:58:23.0
WinForm无框模式多屏幕最大化
我将Form设置为无框模式,自定义了最大化按钮,现因为系统是接了两个显示器,我在最大化按钮事件的代码如下:
        if (ibutton.ImageKey == "Max")
        {
          ibutton.ImageKey = "Normal";
          toolTipText.SetToolTip(ibutton, "向下还原");
          Screen currentScreen = Screen.FromControl(this);
          this.MaximizedBounds = currentScreen.WorkingArea;
          this.WindowState = FormWindowState.Maximized;
        }
        else if (ibutton.ImageKey == "Normal")
        {
          ibutton.ImageKey = "Max";
          toolTipText.SetToolTip(ibutton, "最大化");
          this.WindowState = FormWindowState.Normal;
        }

问题出现了,当Form在主屏幕即有任务栏的那个显示器最大化时正常,在另一个显示器不正常(表象就是Form不见了)


------解决思路----------------------
引用:
Quote: 引用:

http://www.jb51.net/article/67263.htm
这个好像不符合要求吧?最大化如何还原?

我不是在告诉你 那个连接 可以直接解决你的问题
只想告诉你 
你可以根据那个连接 知道你窗体所在的屏幕上
然后有了屏幕 你可以知道对应屏幕的 工作区大小
有了工作区大小 你就可以设定窗体的对大话的值

this.MaximumSize = Screen.FromHandle(this.Handle).WorkingArea.Size;
this.WindowState = FormWindowState.Maximized;

你想要还原 设置WindowState = Normal 就行了
对了 还有 最大化 默认是在当前屏幕的左上角开始算的 什么意思呢
意思就是 如果我的任务栏 不是在底部显示的 而是在上面 或者左边显示的 那么 最大化后 确实把任务栏的区域留了出来 不过窗体的坐标却是在当前屏幕左上角 所以你还得处理其他问题
所以 简单点 就不要设置最大化了 自己设置 窗体坐标和大小方便又简单
  相关解决方案