Winforms MDI客户端区域的大小/位置
MDI表单内部是承载MDI子表单的客户端区域。我怎么知道那个区域有多大?到目前为止,我所能想到的最好方法是找到父级潜在客户区(mdipradent.ClientRectangle)的总大小,然后减去从客户区移除的组件(如工具栏等)的大小。有更好的方法吗?表单上没有允许您访问MDI客户端窗口的属性。但你可以像这样找到它:Winforms MDI客户端区域的大小/位置,winforms,mdi,mdichild,mdiparent,Winforms,Mdi,Mdichild,Mdiparent,MDI表单内部是承载MDI子表单的客户端区域。我怎么知道那个区域有多大?到目前为止,我所能想到的最好方法是找到父级潜在客户区(mdipradent.ClientRectangle)的总大小,然后减去从客户区移除的组件(如工具栏等)的大小。有更好的方法吗?表单上没有允许您访问MDI客户端窗口的属性。但你可以像这样找到它: public MdiClient GetMdiClientWindow() { foreach (Control ctl in this.Controls) { if
public MdiClient GetMdiClientWindow() {
foreach (Control ctl in this.Controls) {
if (ctl is MdiClient) return ctl as MdiClient;
}
return null;
}
从这里开始,只需使用它的Size属性。下面是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
谢谢,真是太棒了。出于某种原因,我不得不再减去4个像素(可能是帧边框?),但我可以接受。@Jeff使用MdiClient.ClientSize而不是使用LINQ减去4个像素:
this.Controls.OfType().FirstOrDefault()代码>