0
A
回答
4
尝试
Screen.FromControl(this).GetWorkingArea();
来计算尺寸(没有任务栏) 然后所述。减去形式ClientSize /尺寸之间的差。 希望有效,没有测试过。
更新:
有点哈克,但我想它和它的作品。
var frm = new Form();
frm.Opacity = 100;
frm.WindowState = FormWindowState.Maximized;
frm.Show();
while (!frm.IsHandleCreated)
System.Threading.Thread.Sleep(1);
var result = frm.ClientSize;
frm.Close();
return result;
UPDATE2:
这是一个更好的解决方案。 我禁用绘制表单,最大化它,获取客户区域,将其设置恢复正常并返回结果。运作良好,没有闪烁或什么。
private static Size GetMaximizedClientSize(Form form)
{
var original = form.WindowState;
try
{
BeginUpdate(form);
form.WindowState = FormWindowState.Maximized;
return form.ClientSize;
}
finally
{
form.WindowState = original;
EndUpdate(form);
}
}
[DllImport("User32.dll")]
private extern static int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam);
private enum Message : int
{
WM_SETREDRAW = 0x000B, // int 11
}
/// <summary>
/// Calls user32.dll SendMessage(handle, WM_SETREDRAW, 0, null) native function to disable painting
/// </summary>
/// <param name="c"></param>
public static void BeginUpdate(Control c)
{
SendMessage(c.Handle, (int)Message.WM_SETREDRAW, new IntPtr(0), IntPtr.Zero);
}
/// <summary>
/// Calls user32.dll SendMessage(handle, WM_SETREDRAW, 1, null) native function to enable painting
/// </summary>
/// <param name="c"></param>
public static void EndUpdate(Control c)
{
SendMessage(c.Handle, (int)Message.WM_SETREDRAW, new IntPtr(1), IntPtr.Zero);
}
2
尝试下面的链接,
http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.workingarea%28VS.71%29.aspx
+1
尽管此链接可能回答问题,但最好包含答案的基本部分[http://meta.stackexchange.com/a/8259]并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – bummi
+0
这是更好的答案。 –
相关问题
- 1. 如何获得表单的非最大化窗口大小?
- 2. 如何让KeyListener在最大化和最小化框架的情况下工作?
- 3. 当窗口最大化时获得非最大化的窗口位置/大小
- 4. 最小化/最大化div
- 5. 如何获得JDesktopPane最大化的Jframe的最大尺寸。
- 6. 如何最大化/最小化iFrame?
- 7. 取消最大化表格的大小
- 8. 最大化MPart时的例外情况
- 9. 默认情况下最大化表单(JFrame)打开时
- 10. 最小化最大化不工作
- 11. Selenium RC单个窗口 - 如何最大化客户端框架
- 12. 最小化ExtJS的大小
- 13. Bash。在我的bash脚本中获取最大化列表和最大化终端的最大列数
- 14. 最大化,最小化ExtJS的面板
- 15. 最小化,最大化exe的
- 16. c#表单最小化/最大化按钮不见了?
- 17. 在android中最大化和最小化
- 18. 如何最大化图像大小作为JPanel的大小
- 19. 我如何知道用户何时最小化/最大化Eclipse?
- 20. 最小化最大成本
- 21. 最大化最小差异
- 22. 如何在jsp中最小化和最大化表格
- 23. 如何最小化OpenCv库的大小?
- 24. 如何获得最大化窗口的大小而不显示它?
- 25. 如何在不超过最大文档大小的情况下编写聚合?
- 26. 如何在不写入任何内容的情况下获得stringstream的实际最大大小?
- 27. 如何检索窗口最小化,最大化和关闭按钮的大小?
- 28. Java Swing JFrame最小化/最大化调整大小错误
- 29. 最小化WCF服务客户端的内存使用情况
- 30. 如何在jquerymobile中最大化和最小化div的点击
当窗体未最大化时,窗体大小中有边框大小,当窗体最大化时,窗体边框消失。所以这是不正确的。 – EFanZh
你是对的,我添加了另一个解决方案,创建一个隐藏的表单并返回客户端大小,假设该值与您的表单相同。你可以存储结果,所以你只需要做一次。 –