【问题标题】:Size/Location of Winforms MDI Client AreaWinforms MDI 客户端区域的大小/位置
【发布时间】:2009-03-02 20:07:55
【问题描述】:

在 MDI 表单内部是承载 mdi 子表单的客户区。我如何知道该区域有多大?到目前为止,我能想到的最好的方法是找到父级潜在客户区 (mdiparent.ClientRectangle) 的总大小,然后减去从客户区带走的工具栏等组件的大小。有没有更好的办法?

【问题讨论】:

    标签: winforms mdi mdichild mdiparent


    【解决方案1】:

    表单上没有属性可以让您访问 MDI 客户端窗口。但是你可以像这样找回它:

    public MdiClient GetMdiClientWindow() {
      foreach (Control ctl in this.Controls) {
        if (ctl is MdiClient) return ctl as MdiClient;
      }
      return null;
    }
    

    从那里,只需使用它的 Size 属性。

    【讨论】:

    • 谢谢,效果很好。出于某种原因,我不得不减去额外的 4 个像素(可能是为了边框?),但我可以忍受。
    • @Jeff 使用 MdiClient.ClientSize 而不是减去 4 个像素
    • 使用 LINQ:this.Controls.OfType<MdiClient>().FirstOrDefault();
    【解决方案2】:

    这是 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
    

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 1970-01-01
      • 2020-11-25
      • 2016-11-22
      • 2017-09-18
      • 2013-08-30
      • 2020-08-09
      • 1970-01-01
      • 2023-01-29
      相关资源
      最近更新 更多