Quale codice di configurazione deve essere inserito nell’evento Form Constructors rispetto a Form Load?

Per le applicazioni Winform mi chiedo quale codice di configurazione dovrebbe andare in:

  • MainForm ()

al contrario di

  • MainForm_Load (mittente dell’object, EventArgs e)

Ci sono delle linee guida sulle migliori pratiche qui?

I programmatori che hanno lavorato con VB6 tendono a inserire un sacco di codice nell’evento Load, in VB6 quell’evento è stato utilizzato per inizializzare il modulo. Ma non è più appropriato in Windows Form, la class Form può avere un costruttore. Il modo .NET è di inizializzare gli oggetti di class nel costruttore, ci sono pochissimi motivi validi per non farlo per la class Form.

L’evento Load viene eseguito subito dopo l’handle della finestra per la creazione del modulo, appena prima che diventi visibile all’utente. Dovresti scrivere solo codice nel gestore eventi che dipende dall’avere creato l’handle. Non esiste un carico di codice che si qualifica per questo requisito tranne un tipo: codice che richiede che le dimensioni e la posizione della finestra siano note.

I valori di proprietà Size e Location in fase di progettazione di un modulo non corrispondono ai valori effettivi quando il modulo viene eseguito su un altro computer. Il modulo può essere ridimensionato per adattarsi alle dimensioni del carattere del sistema o all’impostazione DPI dell’adattatore video sul computer di destinazione. Anche le preferenze dell’utente hanno un ruolo, l’utente potrebbe aver selezionato una diversa dimensione del carattere per la didascalia della finestra. Di solito non ti interessa nulla di questo, a meno che tu non voglia che la finestra abbia una posizione particolare sul desktop o che sia allineata con qualche altra finestra.

Scrivere il codice nell’evento Load che fa cose come inizializzare i controlli TreeView o ListView può rallentare notevolmente il tempo di avvio. Quando lo fai nel costruttore, Windows Form non ha ancora bisogno di aggiornare la finestra fisica, non è ancora stato creato. Una volta creato il controllo nativo, Winforms lo inizializza con un aggiornamento collettivo invece di un nodo / elemento alla volta, come accade quando il codice viene eseguito nell’evento Load. Grande differenza.

Ultimo ma non meno importante: non dovresti mai usare l’evento Load, dovresti sovrascrivere il metodo OnLoad (). Ciò garantisce che il codice venga eseguito in un ordine prevedibile quando tu (o qualcun altro) erediti dalla tua class Form. IntelliSense ti aiuta a scrivere questo metodo, digita semplicemente “protected onl” e premi tab per fare in modo che IntelliSense completi automaticamente il metodo. Nota come hai la possibilità di inserire il codice prima o dopo la chiamata base.OnLoad (), è così che controlli chi è il capo. Tu sei il capo quando lo metti dopo, non spesso la scelta corretta tra due.

Dai un’occhiata rapida all’uso di Costruttore in Windows Form per garantire l’inizializzazione corretta

Utilizzare il Costruttore in un Windows Form per assicurarsi che l’inizializzazione sia eseguita correttamente. L’ordine di sparatoria di eventi non è una scienza esatta e non puoi sempre dipendere dall’ordine in cui gli eventi si triggersno, indipendentemente da ciò che hai visto in passato.

….

Per questo motivo, Microsoft consiglia di gestire il codice di inizializzazione nel Costruttore moduli, presupponendo che non si disponga di un’inizializzazione che richieda molto tempo e che possa essere suddivisa in intervalli o eseguire un DoEvents ().