Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347

    [VB.NET] Riferimento Oggetti Presenti in un altro Form

    Buongiorno a tutto il forum..
    Ieri ho iniziato a dare un'occhiata al visual basic .net prima lavoravo con il 6...
    Sono fermo da una mezzora su una cavolata assurda ma non ne vengo a capo...
    Praticamente per esempio ho creato un modulo con una semplice funzione che mi dovrebbe scrivere ciao nella textbox del form1...
    codice:
    Module Module1
        Public Sub Scrivi()
            Dim form1 As New Form1()
            form1.TextBox1.Text = "CIAO"
        End Sub
    End Module
    Nel form1 ho un bottone che mi lancia la sub Scrivi ed in teoria dovrebbe comparirmi "CIAO" nella textbox ma nada...

    codice:
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Scrivi()
        End Sub
    Sono in crisi su una banalità... sfortunatamente\fortunatamente la sintassi non è più quella del vb6...
    Dove sbaglio???
    Ciao e grazie a tutti

  2. #2
    prova solamente

    dim frm as new Form1()
    frm.text1.text = "Prova"
    frm.show()

    ... ...

  3. #3
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    ho provato ma così mi apre un nuovo form che eredita le caratteristiche del form1...
    uff ma per una banalità del genere perdere tutto sto tempo..
    e sui manuali non si parla di questo

    mah

    grazie mille per l'interessamento

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da Fado84
    ho provato ma così mi apre un nuovo form che eredita le caratteristiche del form1...
    uff ma per una banalità del genere perdere tutto sto tempo..
    e sui manuali non si parla di questo
    Sul manuale non si parla di una simile pratica poichè è sbagliata nel contesto della programmazione orientata agli oggetti.

    Credo sia del tutto sbagliato tentare di riprodurre in VB.NET molte delle cose che si facevano in VB6; nel caso specifico, stai richiamando una procedura che crea un form e cambia le proprietà di un componente da un'istanza della classe del form stesso.

    Lavorare correttamente con VB.NET e con il framework in generale esige, da parte di chi è abituato alle "pratiche" di VB6, un cambiamento radicale di mentalità nell'organizzazione del codice, pena l'adozione di soluzioni inefficaci o che possono portare a problemi di difficile individuazione e risoluzione.

    Dovresti acquistare un manuale o seguire una documentazione senza saltare i passaggi o "bruciare le tappe"...la soluzione al tuo problema verrà automaticamente e sarà del tutto lampante.

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

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

  5. #5
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    hai perfettamente ragione....
    diciamo che ho saltato le tappe perchè volevo realizzare un progetto per mio fratello in .net...

    io utilizzo un modulo che in .net diventa una classe con tutti i componenti statici.. quindi se dall'interno di questo modulo voglio accedere ad una textbox in un form o metto la textbox come campo pubblico o passo all'interno del mio modulo la textbox..
    Questo è quello che ho capito del .net

    Ora.. io utilizzo i moduli come contenitore di funzione, variabili pubbliche ecc ecc per avere un pò più di ordine..
    Sbaglio secondo voi??

    Poi ho visto questa sintassi:
    Dim form1 As New Form1()
    form1.TextBox1.Text = "CIAO"
    e pensavo si potesse utilizzare nel modulo

    Grazie mille a tutti per l'interessamento

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da Fado84
    quindi se dall'interno di questo modulo voglio accedere ad una textbox in un form o metto la textbox come campo pubblico o passo all'interno del mio modulo la textbox..
    Questo è quello che ho capito del .net
    Il concetto di "pubblico" e "privato" non è uguale a quello di VB6; rendere pubblico il controllo TextBox significa che tale componente è accessibile da qualsiasi codice client che si occupi di creare un'istanza del form, come avviene nel codice che hai postato di seguito.

    Originariamente inviato da Fado84
    Ora.. io utilizzo i moduli come contenitore di funzione, variabili pubbliche ecc ecc per avere un pò più di ordine..
    Sbaglio secondo voi??
    Per avere un po' più di ordine, non si dovrebbero mai avere variabili pubbliche.

    Originariamente inviato da Fado84
    Poi ho visto questa sintassi:
    Dim form1 As New Form1()
    form1.TextBox1.Text = "CIAO"
    e pensavo si potesse utilizzare nel modulo
    Sì, la sintassi la puoi utilizzare nel modulo, ma devi aver ben chiaro i principi di funzionamento del codice che scrivi; il codice sopra non fa altro che creare un'istanza del form e impostare il testo della casella; puoi ovviamente richiamare da qualsiasi form la tua subroutine nel modulo, ma ogni volta che lo farai verrà ovviamente creata una nuova istanza del form corrispondente alla classe Form1 di cui viene reimpostato il contenuto della casella di testo TextBox1.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    ok fin qui ci sono... lui crea un nuovo form che eredita le caratteristiche fal form1 e quindi vado a modificare il nuovo form creato... ma per modificare il form originale come faccio da modulo??

    grazie sono molto utili le tue spiegazioni.

    p.s: perchè le variabili pubbliche creano disordine?

    ciau

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da Fado84
    ok fin qui ci sono... lui crea un nuovo form che eredita le caratteristiche fal form1 e quindi vado a modificare il nuovo form creato... ma per modificare il form originale come faccio da modulo??
    Potresti passare l'oggetto (istanza del form) che deve essere manipolata come parametro, ad esempio.
    codice:
    Module Module1
        Public Sub Scrivi(aForm As Form1)
            aForm.TextBox1.Text = "CIAO"
        End Sub
    End Module
    Ovviamente, prima di poter richiamare questa sub, da qualche parte devi creare l'istanza del form (con New) e visualizzarla; alla pressione del pulsante, puoi richiamare il metodo Scrivi passando Me (che rappresenta l'istanza dell'oggetto form chiamante) come parametro.
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Scrivi(Me)
    End Sub
    Non ho verificato la correttezza sintattica del codice.

    Originariamente inviato da Fado84
    p.s: perchè le variabili pubbliche creano disordine?
    Perchè quando una variabile è globalmente pubblica, qualsiasi routine può modificarne il valore ed è facile smarrire il percorso di esecuzione giungendo in situazioni nelle quali la variabile assume un valore non aspettato ma non è possibile risalire a quale procedura abbia provocato il problema.

    I criteri di visibilità nella programmazione ad oggetti sono molto più efficienti, in questo senso, a discapito di un po' di overhead, ma ogni soluzione informatica esistente rappresenta un compromesso, del resto.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  9. #9
    Utente di HTML.it L'avatar di Fado84
    Registrato dal
    Feb 2004
    Messaggi
    347
    ok a quanto pare la procedura per la modifica di un oggetto in un form da modulo è "complessa" se si devono modificare parecchi oggetti..
    giunto a questa conclusione volevo chiederti un'ultima cosa...
    tu per cosa li utilizzi i moduli?? praticamente tutte le funzioni che utilizzo in un modulo devo passargli tutti gli oggetti....

    grazie mille...
    come sempre sei chiarissimo

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da Fado84
    tu per cosa li utilizzi i moduli??
    A parte il fatto che, in merito al .NET Framework, non programmo in VB.NET ma bensì in Delphi.NET, non utilizzerei comunque dei moduli; o meglio, i moduli non sono altro che contenitori di namespace i quali, a loro volta, contengono classi e altri tipi di dati...NIENTE variabili, procedure o funzioni globali/private.

    Originariamente inviato da Fado84
    praticamente tutte le funzioni che utilizzo in un modulo devo passargli tutti gli oggetti....
    Non so cosa devi ottenere nella tua applicazione, ma non vedo nemmeno perchè creare questo modulo esterno con tutte queste funzioni...

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

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

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 © 2026 vBulletin Solutions, Inc. All rights reserved.