RESIZE

di il
10 risposte

RESIZE

Buongiorno a tutti.

Io avrei un piccolo problema di dimensioni con i miei progetti:
io i software li ho fatti tutti con risoluzione 1920x1080. Ma mi sembra una follia che quando vado a cambiare monitor, ogni volte io debba ridisegnare e ricompilare il mio form.
Ho fatto qualche ricerca in rete, ho trovato molti documenti, ma o sono io che non riesco ad attuare i suggerimenti proposti dal web, oppure non fanno al caso mio.
Io all'interno del mio form ho i seguenti controlli:
panel, button e label.
Ho provato a impostare tutti su autosize, e anchor sul lato in alto e sinistro del form, ma senza risultati, ho provato a racchiudere tutti i controlli in un panel con sempre proprietà autosize e dock=fill, ma senza alcun risultato.
qualcuno ha un altro suggerimento da darmi?
grazie mille.

10 Risposte

  • Re: RESIZE

    Si chiama "Layout Manager" ed ha, appunto, il compito di ""ridimensionare/riposizionare"" finestre e controlli in base alla dimensione dello schermo.
  • Re: RESIZE

    Non è un controllo predefinito di vb.net vero?
    perchè tra l'elenco dei controlli ho solo :
    FlowlayoutPanel
    TablelayoutPanel
    Dove posso trovarlo?
  • Re: RESIZE

    Ci sono un milione di modi di fare resizing...

    Ad esempio metti un TablelayoutPanel con Dock = DockStyle.Fill, poi aggiungi un Button nel primo quadrante di TablelayoutPanel con Dock = DockStyle.Fill, lanci il programma e vedrai che il pulsante si ridimensiona con il form occupandone un quarto dell'area.

    Oppure aggiungi al form vuoto solo un button con Dock = DockStyle.Fill e MaximumSize = Drawing.Size(200, 200), lanci il programma e vedrai che il pulsante si ridimensiona con il form fino alla dimensione massima di 200x200.

    eccetera...
  • Re: RESIZE

    Ok, grazie mille dei suggerimenti,
    vi farò sapere
  • Re: RESIZE

    ors ha scritto:


    Ho provato a impostare tutti su autosize, e anchor sul lato in alto e sinistro del form, ma senza risultati, ho provato a racchiudere tutti i controlli in un panel con sempre proprietà autosize e dock=fill, ma senza alcun risultato.
    Impostare la proprietà Dock a Fill per tutti i controlli non ha senso: devi assegnare i valori corretti in base al lato della finestra a cui intendi agganciare i controlli in gioco, lasciando Fill solo per quello che deve occupare lo spazio "rimanente" (quello che non viene occupato dagli altri controlli).

    Se devi suddividere più aree di controlli, puoi usare i componenti di layout o inserire degli opportuni pannelli da "dockare" nel modo corretto.

    Magari fornisci una idea schematica del layout che stai cercando di realizzare per ulteriori approfondimenti.

    Ciao!
  • Re: RESIZE

    Grazie Mille alka, sto provando a prenderci manualità, ma se mi blocco e non ne esco fuori, al massimo mando un'idea schematica cosi da approfondire l'argomento.
    Il problema e che questo lavoro andava fatto prima, adesso ho tutti i controlli messi nel form, senza uno schema preciso.
    Spero che con un po di pratica, di riuscire a capire il "gioco".
    Solo una cosa che notavo, nonostante io sto ancorando i controlli, si spostano e non si ridimensionano, nonostante siano autosize, c'è qualcosa che ignoro?
  • Re: RESIZE

    Se hai già fatto tutto lascia perdere, metti nel form
    
            Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
            Me.MaximizeBox = False
            Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
    
    Così lo blocchi e la chiudi lì. Fai un form unico con le dimensioni della risoluzione minima che usa il cliente.
    Oppure fai 2/3 form con le risoluzioni usate, poi ti leggi la risoluzione all'avvio
    
            Dim screenWidth As Integer = Screen.PrimaryScreen.Bounds.Width
            Dim screenHeight As Integer = Screen.PrimaryScreen.Bounds.Height
    
    e apri il form che ti serve.

    Intanto ti studi come fare il prossimo progetto
  • Re: RESIZE

    Il problema e che il progetto ha più di un form xD, per questo sto cercando di rendere anche la cosa più dinamica possibile, è non e detto che il progetto sia finito qua, per questo, io ho ho preso il primo form, ci sto "giocando" ma poi quello che ho capito da quel form, devo applicarlo anche a tutti gli altri. E in questo momento ho capito abbastanza secondo quale logica ancorarli, ma il problema e che si sovrappongono ....
  • Re: RESIZE

    ors ha scritto:


    Solo una cosa che notavo, nonostante io sto ancorando i controlli, si spostano e non si ridimensionano, nonostante siano autosize, c'è qualcosa che ignoro?
    La proprietà AutoSize non c'entra, o c'entra relativamente: essa regola il dimensionamento del controllo in base al contenuto, ma ciò che tu devi invece organizzare e la collocazione del "contenitore" dei singoli controlli, magari a dimensione fissa, impostando il Dock sul lato della finestra a cui deve agganciarsi, mentre il contenitore "flessibile" che si adatta è uno solo.

    Segui questo tutorial per capire il funzionamento, poi procedi intervenendo sulla tua UI.

    Ciao!
  • Re: RESIZE

    E chi ti viete di bloccare le dimensioni degli altri form?
    Vedi tu, il problema è che dovrai spendere molti giorni lavorativi a fare una cosa del genere.
    Sicuramente se ti disegni il reticolato che ti serve su un TablelayoutPanel e metti tutti i controlli in Fill in ogni settore, avrai i controlli che si sposteranno e ridimensioneranno senza sovrapporsi mai. Il font, però, te lo devi aggiustare a mano. Puoi mettere anche altri TablelayoutPanel dentro un settore del TablelayoutPanel principale
Devi accedere o registrarti per scrivere nel forum
10 risposte