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

    Aggiornare textbox.text da un modulo

    Salve,
    ho delle textbox su un form, FORM1.

    Dal form1 chiamo una sub in un modulo, e questa sub nel modulo dopo aver eleaborato mi deve scrivere in delle textbox nel form1. Ma questo non avviene, non mi restituisce errori, ma le scritte non si aggiornano.

    Come mai?

  2. #2
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,994
    Difficile rispondere senza vedere il codice, non credi ? magari hai scritto
    textbox1.text = qualcosa invece di Form1.textbox1.text = qualcosa
    Ultima modifica di patel; 06-08-2018 a 07:38

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Quote Originariamente inviata da Pamela72 Visualizza il messaggio
    Salve,
    Dal form1 chiamo una sub in un modulo, e questa sub nel modulo dopo aver eleaborato mi deve scrivere in delle textbox nel form1. Ma questo non avviene, non mi restituisce errori, ma le scritte non si aggiornano. Come mai?
    Riporta il codice che hai scritto (o la sua parte significativa) e indica il linguaggio che stai utilizzando (VB6, VB.NET, ...).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109
    Come hanno già detto gli altri senza vedere come fai il tutto è davvero difficile capire dove sia il problema!

    La prima domanda che mi viene da farti è: Stai passando le tue textbox come valore/argomento alla sub/function che hai sul modulo?

  5. #5
    Allora. Ho capito dove sta il problema.
    Nel modulo ci sono delle funzioni e delle sub che funzionano perfettamente, ma...

    Io ricevo una stringa da porta seriale (nel FORM1), invio questa stringa ad una sub che si trova all'interno del MODULO1.
    Questa sub nel modulo spezzetta la stringa, fa delle elaborazioni e poi mi va a riempire una ListView che si trova nel FORM1.

    Il problema sta proprio nella stringa proveniente da porta seriale, se invio la stringa da una TEXTBOX, tutto funziona perfettamente, mentre se la invio da:
    codice:
    Private Sub SerialPort_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
            Dim response as string = (SerialPort1.ReadLine)
            modulo1.elabora(variabile)
    non mi riempie la LV.

    Come si può risolvere?
    GRAZIE

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa ma cosa è

    variabile

    ?

    Tu leggi in

    response

    ... non si capisce molto...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Si, scusami.
    Avevo tolto alcune righe di codice che avevo aggiunto per fare delle prove.
    codice:
    PrivateSubSerialPort_DataReceived(ByVal sender AsSystem.Object,ByVal e AsSystem.IO.Ports.SerialDataReceivedEventArgs)HandlesSerialPort1.DataReceived
            Dim response asstring=(SerialPort1.ReadLine)
            modulo1.elabora(response)
    Se modulo1.elabora() viene chiamato dalla sub della porta seriale, non mi aggiorna TextBox e ListView, mentre se lo chiamo al click del button e gli passo come argomento la stringa in una textbox, funziona perfetamente.
    Come mai??

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma hai controllato che response contenga caratteri visualizzabili? Noi non possiamo farlo devi controllare tu in debugging
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Si, i caratteri sono visualizzabili (stringa).
    Secondo me è un problema di cross-thread, cosi ho letto da alcune ricerche su google, ma tutto scrito in inglese.

    Ho tolto l'istruzione:
    codice:
    Control.CheckForIllegalCrossThreadCalls = False
    e adesso appena ricevo la stringa dalla seriale mi da errore:
    System.InvalidOperationException Messaggio=Operazione cross-thread non valida: è stato eseguito l'accesso al controllo 'RichTextBoxTERMINALE' da un thread diverso da quello da cui è stata eseguita la creazione.

    Un esempio usava una Delegate sub, un esempio inviece un InvokeRequired, ma non ho capito bene come funzionano
    Ultima modifica di Pamela72; 10-08-2018 a 14:34

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    Quote Originariamente inviata da Pamela72 Visualizza il messaggio
    Questa sub nel modulo spezzetta la stringa, fa delle elaborazioni e poi mi va a riempire una ListView che si trova nel FORM1.
    Io vedo già un problema in questa impostazione.

    Ogni cosa dovrebbe avere una sola (e singola) responsabilità. Se hai creato una Sub che spezzetta una stringa, fatti restituire da essa i pezzi o comunque i dati che ti servono, e poi fa in modo che il Form nel quale è presente la ListView recuperi queste informazioni e in base ad esse vada a riempire il controllo.

    In tutti i casi, non ha senso che una funzione faccia più cose, e soprattutto avere una funzione che elabora la stringa mettendo i dati su un Form o un suo controllo: se un domani i dati vanno mostrati in una griglia, devi cambiare la logica che interpreta la stringa anche se dovresti evitare di farlo, e inoltre - come in questo caso - non si può determinare se il problema sta nella corretta intepretazione della stringa o nella corretta impostazione del controllo.

    Dividi le implementazioni e vedrai che questo sarà già di aiuto per risolvere il problema.

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