IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Impossibilité de mettre à jour une Textbox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Par défaut Impossibilité de mettre à jour une Textbox
    Bonjour,

    Je n'arrive pas à afficher un message dans une textbox malgré de longues consultation de forum, de google etc.
    Voici le programme en cause, le cas très particulier de la mise à jour de la Textbox


    Portefeuilles est la première forms/Class "mère" affichée, elle comporte:
    une textbox Portefeuilles.Erreur_box visualisant des messages d'erreur de toute l'application
    un bouton Portefeuilles.bouton_titres précisant la nature de la saisie à faire

    un click sur le Portefeuilles.bouton_titres lance une seconde forms/class "fille" Titres qui permet:
    de saisir dans Titres.datagridview les données de la transaction
    de lancer un thread recherchant sur Internet des données complémentaires etat_civil_demande(code_ISIN)
    de recevoir dans titres les données collectées (donnees_recues) et renvoyées par le thread etat_civil_disponible(ByVal donnees_recues As String)

    le thread ne fait pas de mise à jour des controles, il envoie les données (donnees_recues) à un sous-programme de Titres déclaré ainsi;

    Dim etat_civil_disponible As NotifyMainWindow
    Delegate Sub NotifyMainWindow(ByVal donnees_transmises)
    Dim donnees_transmises As String


    si la recherche est correcte les données recues sont affichées dans "fille": Titres>Titres.datagridview
    si une erreur apparait dans le thread l'affichage doit se faire dans la textbox de "mère": Portefeuilles.Erreur box.Text = donnees_recues


    Ici l'erreur, mon incompréhension, le message d'erreur peut être imprimé par msgbox dans les deux forms mère et fille par contre la textbox reste vierge
    bien que donnees_recues ai été transmis, reçu et affecté à Portefeuilles.Erreur_box

    que dois je faire pour pouvoir afficher dans la Portefeuilles.Erreur_box?

    Merci à vous de m'avoir lu et de tenter de m'expliquer où se trouve mon erreur.

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Personnellement je comprends très difficilement l'implémentation de ton projet et je n'ai pas envie de te poser 10 questions pour visualiser plus facilement son périmètre.....

    Pourquoi ne pas poster de vraies portions de codes...car là :
    - tu parles de classe mère et fille mais est-ce réellement de l'héritage ? Auquel cas son implémentation est qqch qu'on ne peut pas ignorer pour mieux t'aider !
    - lorsque tu lances ta deuxième form, optes-tu pour le passage de paramètres par le constructeur ? Le cas échéant il pourrait être intéressant de savoir si tu as mis en place une classe partagées.....etc.....
    - le thread ne mets pas à jour les contrôles alors qu'il le devrait à mon sens car un résultat est retourné ? [Ton problème se situe ici à mon avis]
    - on veut en savoir davantage sur la constitution de ton sous-programme et de ce thread ?
    ....etc.......
    .................

    Postes ton projet ou qqch qui s'y rapproche pour qu'on puisse identifier et trouver la solution à ton problème.

    Cdlt.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 128
    Par défaut
    c'est bon j'ai compris l'erreur, Tu peut pas modifier un control qui n'est pas créer dans le thread qui le modifie


    solution par exemple :

    Devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.invoke(sub()
    Button1.text = "Hello"
    end sub)
    sa t'a rien fait car tu devrai avoir un Try catch qui cache l'erreur mais sinon sa t'aurai fait une erreur.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Par défaut
    Je suis parfaitement d'accord avec toi, le message doit parvenir à un control n'appartenant pas à celui qui a créé le thread, sauf si.....

    j 'ai essayé ta solution en mettant dans le sous programme qui reçoit le retour du thread les instructions suivantes:

    Portefeuilles est la mère du programme, Erreur_box une textbox appartenant à sa Form, donnees-recues les data envoyées par le thread. Les instructions ont été placées dans le s/p recevant du thread le buffer
    Je galère parce que je ne pige pas ce mécanisme!
    Peux tu me dire si la syntaxe est correcte?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
          Try
                Portefeuilles.Invoke(Sub()
                                         Portefeuilles.Erreur_box.Text = donnees_recues
                                     End Sub)
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    message reçu sur le catch:
    Impossible d'appeler Invoke ou BeginInvoke sur un contrôle tant que le handle de fenêtre n'a pas été créé

    Toujours est il un grand merci de ton aide, cordialement

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    Bonjour,

    Personnellement je comprends très difficilement l'implémentation de ton projet et je n'ai pas envie de te poser 10 questions pour visualiser plus facilement son périmètre.....
    Merci de ton aide,
    J'ai presque fini de dépouiller mon code du superflu (10000 lignes) et prêt a te l'envoyer, il y a bien trois classes Portefeuilles, Titres et le thread, le tout pour 300 lignes. Je l'envoie sur le forum ou tu préfères un Zip
    Merci de ton attention, cordialement

  6. #6
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par ernie74 Voir le message
    Merci de ton aide,
    J'ai presque fini de dépouiller mon code du superflu (10000 lignes) et prêt a te l'envoyer, il y a bien trois classes Portefeuilles, Titres et le thread, le tout pour 300 lignes. Je l'envoie sur le forum ou tu préfères un Zip
    Merci de ton attention, cordialement
    Par MP zippé si tu veux.

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 128
    Par défaut
    y'a pas plus mere que 'Me.' en vb c'est plus que 'This.' en c# essaie avec le Me. et dit moi si sa a marché.

  8. #8
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 128
    Par défaut
    (la preuve que 'portefeuilles' c'est pas lui qui doit être invoquer est qu'il n'est meme pas considéré comme ouvert là.)

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Par défaut
    Citation Envoyé par themine702 Voir le message
    y'a pas plus mere que 'Me.' en vb c'est plus que 'This.' en c# essaie avec le Me. et dit moi si sa a marché.
    Terminé, résolu, super avec Me.

    A toi un grand merci de ton aide, si l'un d'entre vous sait ou trouver un document expliquant ces mécanismes, merci de me faire passer l'info

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 71
    Par défaut
    Citation Envoyé par wallace1 Voir le message
    Par MP zippé si tu veux.
    ayant trouvé la solution, souhaites tu toujours disposer de mon code?
    Si oui passes moi un MP
    Toujours est il merci de ton temps.
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. mettre à jour une JLabel
    Par Zobbiwan dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/01/2006, 18h33
  2. Prb mettre à jour une table via un fichier excel
    Par antier dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2005, 10h31
  3. Mettre à jour une base sous SQL SERVER 2000
    Par FilipeVV dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 11/02/2005, 12h24
  4. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56
  5. Mettre à jour une table depuis une autre
    Par rsc dans le forum SQL
    Réponses: 4
    Dernier message: 09/07/2004, 10h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo