【发布时间】:2009-03-02 20:07:55
【问题描述】:
在 MDI 表单内部是承载 mdi 子表单的客户区。我如何知道该区域有多大?到目前为止,我能想到的最好的方法是找到父级潜在客户区 (mdiparent.ClientRectangle) 的总大小,然后减去从客户区带走的工具栏等组件的大小。有没有更好的办法?
【问题讨论】:
标签: winforms mdi mdichild mdiparent
在 MDI 表单内部是承载 mdi 子表单的客户区。我如何知道该区域有多大?到目前为止,我能想到的最好的方法是找到父级潜在客户区 (mdiparent.ClientRectangle) 的总大小,然后减去从客户区带走的工具栏等组件的大小。有没有更好的办法?
【问题讨论】:
标签: winforms mdi mdichild mdiparent
表单上没有属性可以让您访问 MDI 客户端窗口。但是你可以像这样找回它:
public MdiClient GetMdiClientWindow() {
foreach (Control ctl in this.Controls) {
if (ctl is MdiClient) return ctl as MdiClient;
}
return null;
}
从那里,只需使用它的 Size 属性。
【讨论】:
this.Controls.OfType<MdiClient>().FirstOrDefault();
这是 vb.net 中该代码的变体:
Public Function GetMdiClientWindowSize() As Size
For Each ctl As Control In Me.MdiParent.Controls
If TypeOf ctl Is MdiClient Then
Return ctl.Size
End If
Next
Return Nothing
End Function
【讨论】: