Sul mio C# Winform (VS 2010/C#/.Net 3.5), ho creato un pulsante nel designer. Voglio spostare e ridimensionare quel pulsante in una posizione diversa in base all'impostazione dell'utente all'avvio di tale modulo.Sposta la posizione di un pulsante dopo che è già stata disegnata
Nel caso in carico della mia forma, ho il seguente codice per spostare e ridimensionare il pulsante:
btnShare.Location = new System.Drawing.Point(16, 496);
btnShare.Margin = new System.Windows.Forms.Padding(4);
btnShare.Size = new System.Drawing.Size(408, 126);
Tutto il codice per creare il pulsante è file * .designer.cs per questa particolare forma.
Il problema è questo: quando il modulo viene caricato, posso vedere il pulsante nella sua nuova posizione in base alle 3 righe di codice sopra. Ma poi quando il modulo ha finito di caricare e passare attraverso tutti i suoi eventi, il pulsante torna alla sua posizione originale che si trova nel metodo * .designer.cs InitalizeComponent().
Non voglio estrarre il codice dal file * .designer.cs e inserirlo solo nel file .cs del modulo perché voglio ancora poter vedere il pulsante nel designer quando lavoro sul design del modulo.
Voglio solo spostare e ridimensionare il pulsante se l'utente ha quell'opzione attivata al caricamento del modulo.
Come posso fare questo poiché .Net sembra disegnare i pulsanti sul mio modulo dopo che l'evento di caricamento è stato elaborato, spostando di nuovo il pulsante sul suo punto originale?
'InitalizeComponent' deve essere richiamato dal costruttore che ottiene/deve essere chiamato molto prima dell'evento Load. Inserirò un punto di interruzione all'inizio di InitalizeComponent per vedere da dove viene chiamato. –
In quale evento si verifica il codice di spostamento e ridimensionamento? –
@Paul: InitalizeComponent viene chiamato prima dell'evento di caricamento, ma sembra che i pulsanti non vengano effettivamente visualizzati fino a quando non vengono eseguiti tutti gli eventi. Quando il mio modulo viene caricato, posso vedere lo stesso pulsante in due punti diversi (la posizione originale in designer.cs e la nuova posizione che ho nell'evento load). Ma non appena il modulo viene caricato, il pulsante che si trova nella seconda posizione scompare e mi rimane solo il pulsante originale creato in designer.cs. È come se il codice in designer.cs che dimensiona/posizioni il pulsante sta sovrascrivendo il codice che ho nell'evento load. – fraXis