Dimensioni / posizione dell'area client MDI di Winforms
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?
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