Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [vb net] Public shared

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    107

    [vb net] Public shared

    salve .
    in un form ho delle label.
    Avendo bisogno del loro valore su altri form, nel codice cambio la loro dichiarazione da

    Public WithEvents lblCodFisc As System.Windows.Forms.Label (messo da vb net in modo automatico)

    in
    Public Shared lblCodFisc As System.Windows.Forms.Label.

    Va tutto bene.
    Ma se in fase di progettazione provo ad effettuare della modiche sul form (location di un altra label,cambio colore...) vbnet mi riscrive in modo automatico la dichiarazione delle label cambiate in precedenza e devo rientrare nel codice e cambiare la dichiarazione.

    non essite un modo per dichiarare alcune label "SHARED"?

    grazie
    device78

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Ciascun componente e controllo presente su un form viene creato quando si crea un'istanza del form stesso.

    Tu stai chiedendo di fare in modo che tutti i form abbiano la stessa medesima Label, il chè ha poco senso.

    Per leggere le proprietà di una Label è sufficiente avere una variabile che contiene un riferimento all'istanza del form creato che contiene la variabile.

    E' già molto che l'editor non si arrabbi!

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    107
    forse ho le idee confuse io.
    Io vorrei che invece di dichiare(in modo automatico), per ciascun label con il proprio nome public, vorrei che questa fosse shared.
    Fino ad adesso devo modoficare io sul codice.
    device78

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da device78
    Io vorrei che invece di dichiare(in modo automatico), per ciascun label con il proprio nome public, vorrei che questa fosse shared.
    Ciò che chiedi non ha senso, secondo me.

    Ciascun form è contenitore dei propri controlli e provvede a crearli quando il form stesso viene creato, e ciascun controllo interagisce con il form; condividere un controllo visuale tra più form usando Shared "rompe" questo legame...ipoteticamente, supponendo di creare più istanza di un form, avresti su tutte la stessa identica Label (modificandone una, modificheresti le etichette su tutte le altre form). Anzi, non funzionerebbe nemmeno così perchè avendo una sola Label condivisa tra tutti i form, solo uno di questi può esserne il Parent pertanto l'etichetta viene visualizzata solo in uno solo dei form alla volta.

    Comunque, non riesco ancora a capire quale vantaggio può darti Shared in questo contesto: quando crei un form, memorizzi il riferimento in una variabile e la usi per chiamare il metodo Show o accedere alle proprietà e ai controlli del form; se desideri modificare questi dati da altri form, è sufficiente che tu inserisca in questi ultimi una variabile pubblica (per semplificare) adatta a contenere il riferimento al primo form che, se inizializzato (diverso da Nothing) possa essere utilizzato per chiamarne i metodi o modificare le proprietà dei suoi controlli.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    107
    ok usero delle variabili shared per scambiare il valore di queste label tra più form.

    grazie mille
    device78

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da device78
    ok usero delle variabili shared per scambiare il valore di queste label tra più form.
    Questa è già una soluzione di gran lunga migliore.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Dal punto di vista concettuale mi sembra errato utilizzare la parola Shared per accedere alle proprietà di oggetti dentro ad un form. Come riportato nella guida, "È possibile utilizzare la parola chiave Shared per indicare che uno o più elementi di programmazione dichiarati sono condivisi. Gli elementi condivisi non sono associati a un'istanza specifica di una classe o di una struttura. È possibile accedere a tali elementi qualificandoli con il nome di classe o di struttura oppure con il nome di variabile di un'istanza specifica della classe o struttura.". In pratica shared serve per creare proprietà o metodi che non fanno riferimento ad una istanza specifica della classe, come questo esempio:
    codice:
    Console.WriteLine(Integer.MaxValue)
    Per leggere o modificare le proprietà dei controlli dentro ad un form è sufficiente lasciare la definizione predefinita:
    codice:
    Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
    Friend permette infatti di accedere ai membri della classe da un'altra classe del progetto.
    Chi non cerca trova.

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.