Set e get

di il
8 risposte

Set e get

Buongiorno a tutti.
Ho due forms ed una classe.
La domanda è questa : dopo aver assegnato un valore a "nome" da form1 ,posso leggere il dato da form2 sfruttando il get?
Grazie.

8 Risposte

  • Re: Set e get

    Salve Jan

    SI, SE entrambe le istanze di form1 e form2 referenziano LA MEDESIMA istanza di Classe1

    salutoni romagnoli
    --
    Andrea
  • Re: Set e get

    Jan ha scritto:


    Ho due forms ed una classe.
    La domanda è questa : dopo aver assegnato un valore a "nome" da form1 ,posso leggere il dato da form2 sfruttando il get?
    Magari aggiungendo qualche informazione di contorno, si capirebbe meglio il contesto e si riuscirebbe a darti una risposta.

    Innanzitutto, se hai due Form e una classe, in realtà hai 3 classi: ciascun Form è definito con una classe, quindi le regole che vi si applicano sono le stesse di qualsiasi altra classe, al netto della "specialità" dell'IDE di supportarne la progettazione visuale.

    Detto questo, assegni un valore a "nome" da Form1... che cos'è nome?
    Un campo? Una proprietà? Come è dichiarato?

    E inoltre, dove si trova questo identificatore nome?
    A chi appartiene?

    "Sfruttando il get" è un po' ambiguo.

    Aggiungi dei dettagli e possibilmente del codice, così magari capiamo meglio qual è la situazione, e spiega cosa vorresti fare.
  • Re: Set e get

    Grazie per i vostri interventi.
    Spero di chiarire con questo banale esempio:

    in class1 scrivo:
    Public Property nome as string
    ecc.
    
    in form1 scrivo :
    
    dim cl as new class1
    cl.nome= textbox1.text ("Pippo")
    ...
    ...
    label1.text= cl.nome (risultato : "Pippo")
    
    Clicco su button1 e si apre form2 in cui scrivo:
    
    dim cl as new class1
    ...
    label5.text=cl.nome (risultato : "")
    
    Cosa sbaglio? perchè form2 non mi restituisce Pippo?
  • Re: Set e get

    
    Public cometichiami As String
    
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.TextBox1.Text = "PIPPO"
            Me.cometichiami = TextBox1.Text
        End Sub
        
     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
             Form2.ShowDialog(Me)
        End Sub
    
    Nel Form2 ...
    
        Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Label1.Text = Form1.cometichiami
        End Sub
    
    questo è il modo più semplice..non so se tu intendevi altro.
  • Re: Set e get

    Scusa.... ma se fai una cosa del genere, semplice e stupida ma che funziona...

    Form1

    Textbox1.Text (ci scrivi quello che vuoi)

    Form2

    Dove ti serve metti, ad esempio in una label, il testo che richiami

    Label1.Text = Form1.Textbox1.Text
  • Re: Set e get

    Se sul Form2 hai scritto dim cl as new class1 la parolina new serve proprio per istanziare un nuovo oggetto, ed è quindi ovvio, anche se l'hai chiamato cl come su Form1, ma sono due istanze diverse, ovvio che non puoi scambiare i dati.

    Su Form2 correggi in public cl as class1 in modo da definire la variabile cl di tipo class1 ma non crea un nuovo oggetto, ed è visibile anche da fuori.

    Quando premi button1 passi a Form2 il riferimento all'oggetto cl in modo che Form2 ci possa accedere
    Routine button1_click:
    Dim frm = New Form2 ' istanzo Form2
    frm.cl = cl ' passo il riferimento di cl
    frm.ShowDialog(Me)   ' chiamo Form2
    ' ....... faccio eventuali altre cose
    frm.Dispose()   ' chiudo Form2
    
    Dentro Form2 hai accesso a cl senza problemi

    La soluzione che ti ho proposto è molto semplificata e serve solo per farti capire il concetto, la soluzione ottimale ovviamente ha bisogno di altre righe di codice, ma intanto inizia da qui

    Sergio
  • Re: Set e get

    Grazie ,Samantha.Grazie ,Orione 1976.
    Le vs. soluzioni mi sono note.
    Il mio tentativo è quello di condividere un valore (in questo caso tra due forms) attraverso una classe.

    Grazie,SirJo.
    So che la tua soluzione è quella giusta e mi sto impegnando a questo fine.
    Al momento,(applicando i tuoi suggerimenti) ,quando cerco di accedere a cl (da form2), ricevo un errore "Riferimento a un oggetto non impostato su un'istanza di oggetto - cl era Nothing".
  • Re: Set e get

    SirJo.Scusami.Funziona tutto come tu hai suggerito.Sbagliavo io perchè avevo definito Private la variabile cl.
    Grazie mille.
Devi accedere o registrarti per scrivere nel forum
8 risposte