Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [c#] Componente visuale con passaggio oggetto esterno

    Salve a tutti,
    premetto che sto muovendo i primi passi verso C# in ambiente di svliluppo Visual Studio.

    Ho creato per la prima volta un componente visuale e fin qui tutto ok. Tale componente, al suo interno utilizza un oggetto:

    TPippo pippo;

    Quello che io vorrei (ed ho fatto) è implementare tutte le funzioni all’interno del componente, utilizzando i vari metodi di “pippo”. Questo è stato fatto e tutto funziona.

    Avrei bisogno che l'oggetto "pippo" fosse passato dall’esterno.
    Per capirci. Il software che sto implementando nel Main crea un’istanza dell’oggetto “pippo”. Tale oggetto dovrà essere visibile in tutte le altre classi del progetto.

    Il componente che ho implementato deve ricevere il riferimento di questo oggetto così da utilizzare le sue funzioni al suo interno.

    All’interno del mio componente però, devo creare un’istanza di “pippo” altrimenti (giustamente mi da un errore quando cerco di utilizzare i suoi metodi).

    La soluzione da me approntata è stata la seguente:
    All’interno del componente ho creato una proprietà che prendesse proprio il riferimento a questo oggetto. Dalla form principale creo l’istanza di “pippo” (ricordo che deve essere visibile e attiva in tutto il progetto); alla proprietà del componente assegno il riferimento creato nella form e tutto funziona.

    Quel che mi sembra poco elegante è avere all’interno del componente un’istanza dell’oggetto, tale istanza non verrà infatti utilizzata siccome, passando un riferimento ad un oggetto esterno, il componente andrà ad utilizzare l’oggetto creato nella form.

    C’è un modo per ovviare al problema? Cioè vi è una soluzione più elegante? So che (se non erro) C# ha il garbage collection, quindi in teoria, uscendo dalla form che utilizza il componente, non dovrebbero esserci oggetti pendenti (e conseguente spreco di memoria).. ma cercavo appunto una soluzione più elegante.

    Se non sono stato chiaro posso rispiegare più in dettaglio cosa fa la classe "pippo" così da far capire perché deve essere visibile in tutto il programma e perché ho creato un componente apposito.

    Grazie in anticipo per le risposte

  2. #2

    Risolto

    Mi rispondo da solo, trovata soluzione. La posto magari è di aiuto a qualcuno in futuro.

    E' bastato mettere un costrutto di selezione ogni volta che utlizzo un metodo di "pippo" per verificare che sia esso "null" o no.

    In questo modo, in fase di complilazione non ho più errore e nella form principale posso settare tranquillamente la proprietà specifica del componente (cioè il riferimento)

    La mia distrazione era dovuta al fatto di non aver mai creato un componente visuale e spesso nelle cose nuove (e forse un pò sconosciute) nel momento che si presenta qualche errore si pensa a tutot tranne che alla soluzione più ovvia .


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.