Domanda

All'interno di un modulo MDI è presente un'area client che ospita i moduli figlio mdi. Come faccio a sapere quanto è grande quella zona? Il meglio che posso trovare finora è trovare la dimensione totale della potenziale area client del genitore (mdiparent.ClientRectangle) e quindi sottrarre le dimensioni dei componenti come barre degli strumenti, ecc. Che tolgono dall'area client. C'è un modo migliore?

È stato utile?

Soluzione

Non esiste alcuna proprietà in un modulo che consente di accedere alla finestra del client MDI. Ma puoi ritrovarlo in questo modo:

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

Da lì, basta usare la sua proprietà Size.

Altri suggerimenti

Ecco una variante di quel codice in 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top