最大化无边框后,Winform ClientSize超出屏幕尺寸

时间:2017-02-16 14:08:05

标签: c# winforms

我正在使用此代码在NormalState的WindowState(具有相当大的边框样式)和Maximized(边框样式为None)之间切换。

if (WindowState != FormWindowState.Maximized)
{
    WindowState = FormWindowState.Maximized;
    FormBorderStyle = FormBorderStyle.None; 
}
else
{
    WindowState = FormWindowState.Normal;
    FormBorderStyle = FormBorderStyle.Sizable;
}

我还在动态调整更改后表单上某些控件的布局。我发现ClientSize.WidthClientSize.Height值超出了最大化/无边框状态下的实际显示器分辨率(客户端大小:1936x1216,实际显示器分辨率:1920x1200)。这导致一些控件超出范围。

是否有一种简单的方法可以确保表单不超过屏幕限制(除了手动检查屏幕大小并将表单强制为该大小)?

1 个答案:

答案 0 :(得分:0)

通过反转最大化和边框样式更改操作的顺序,结果是可解析的。如果在最大化屏幕之前关闭边框,则表单TAB T=1 SET myFolder D:/Temp/img/ SET urlFolder EVAL("{{!LOOP}} == 1 ? 'file:///{{myFolder}}' : 'javascript:undefined;';") URL GOTO={{urlFolder}} SET !EXTRACT_TEST_POPUP NO TAG POS=1 TYPE=TBODY ATTR=* EXTRACT=TXT SET curFile EVAL("var f = []; var a = '{{!EXTRACT}}'.match(/.+/g); for (i in a) {if (i % 4 == 0) f.push(a[i]);} f[{{!LOOP}} - 1];") PROMPT {{curFile}} 值将与显示器大小完全匹配。

工作代码:

SET myFolder D:/Temp/img/
URL GOTO=file:///{{myFolder}}
SET !EXTRACT_TEST_POPUP NO
TAG POS=1 TYPE=TBODY ATTR=* EXTRACT=TXT
SET files EVAL("var f = []; var a = '{{!EXTRACT}}'.match(/.+/g); for (i in a) {if (i % 4 == 0) f.push(a[i]);} JSON.stringify(f);")
PROMPT {{files}}