[vb.net] Dimensionare il form principale in base ad un altro

di il
1 risposte

[vb.net] Dimensionare il form principale in base ad un altro

Ho creato un form pricipale dove ho inserito un menustrip, un toolstrip e un uno status strip nella parte centrale ho inserito un controllo panel e ho settato le poprietà:

(panel)
autosize: True
autosizemode: GrowAndShrink
dock: Fill

allo stesso modo ho settato il form principale:

(form principale)
autosize: True
autosizemode: GrowAndShrink

Adesso per cambiare form di visualizzazione nel panel ho inserito questo comando nei rispettivi controlli toolstrip:

Me.PagePanel.Controls.Clear()
PagePanel.Size = My.Forms.sez01ebay.Size
My.Forms.sez01ebay.TopLevel = False
My.Forms.sez01ebay.Parent = PagePanel
My.Forms.sez01ebay.Show()

Adesso però cosa accade? tutto si vede perfettamente solo che quando clicco su un comando toolstrip fa un effetto resize velocissimo dovuto alla riga Me.PagePanel.Controls.Clear(), infatti, svutando il panel il form si ridimensiona al contenuto del panel (vuoto) poi subito ritorno ad essere normale date che lo ripopolo con le istruzioni successive... se elimino la voce ovviamente si affiancano tutti form...

In sostanza questa è la soluzione che ho trovato io ma il punto è questo: realizzo tanti form quante sono le pagine (300x300 per esempio) e voglio che il form sia adattato a questa misura del controllo panel.

Poi ancora una cosa se gioco sulla visibilità di un form (segliendo un altra strada) dovrei creare tante istanze quante sono le form da visualizzare e quindi non sprecherei memoria?

thanks

1 Risposte

  • Re: [vb.net] Dimensionare il form principale in base ad un altro

    Ho risolto impostando l'autosize del form principale su false prima del select case :

    Me.AutoSize = False
    Select Case e.ClickedItem.Tag
    Case 1
    Me.PagePanel.Controls.Clear()
    PagePanel.Size = My.Forms.sez01ebay.Size
    My.Forms.sez01ebay.TopLevel = False
    My.Forms.sez01ebay.Parent = PagePanel
    My.Forms.sez01ebay.Show()
    sezioneShow = e.ClickedItem.Tag
    Case 2
    Me.PagePanel.Controls.Clear()
    PagePanel.Size = My.Forms.sez02automoto.Size
    My.Forms.sez02automoto.TopLevel = False
    My.Forms.sez02automoto.Parent = PagePanel
    My.Forms.sez02automoto.Show()
    sezioneShow = e.ClickedItem.Tag
    End Select
    Me.AutoSize = True

    Thanks e cmq sono disposto ad altre soluzioni:D
Devi accedere o registrarti per scrivere nel forum
1 risposte