我将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不见了)
------解决思路----------------------
我不是在告诉你 那个连接 可以直接解决你的问题
只想告诉你
你可以根据那个连接 知道你窗体所在的屏幕上
然后有了屏幕 你可以知道对应屏幕的 工作区大小
有了工作区大小 你就可以设定窗体的对大话的值
this.MaximumSize = Screen.FromHandle(this.Handle).WorkingArea.Size;
this.WindowState = FormWindowState.Maximized;
你想要还原 设置WindowState = Normal 就行了
对了 还有 最大化 默认是在当前屏幕的左上角开始算的 什么意思呢
意思就是 如果我的任务栏 不是在底部显示的 而是在上面 或者左边显示的 那么 最大化后 确实把任务栏的区域留了出来 不过窗体的坐标却是在当前屏幕左上角 所以你还得处理其他问题
所以 简单点 就不要设置最大化了 自己设置 窗体坐标和大小方便又简单