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 :

Calcul en temps réel dans une 2ème fenêtre


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Par défaut Calcul en temps réel dans une 2ème fenêtre
    Bonjour,

    Comme j'avais prédis mon retour ... j'ai regarder la FAQ et j'ai résolu déjà pas mal de souci (très bien faite au passage!) bref !

    Mon problème est assez simple je pense : je souhaiterais qu'un Label situé dans une 2ème fenêtre se calcule en temps réel (si possible).

    Je détaille :

    Dans ma fenêtre de mon Main j'ai deux Textbox donc deux variables : A et B.
    Dans ma 2ème fenêtre j'ai un Label (C) qui dépend de A et B ... mais le calcul ne se fait pas en temps réel, il se fait avec les valeurs par défaut de A et B au démarrage et après c'est figé. ... même si je change A et B et je ferme et ré-ouvre la fenetre secondaire.

    Voici ma portion de code dans mon Main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub VarA_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VarA.TextChanged
            Loads_Result.LBL_C.Text = (Math.PI * (VarA - 2 * VarB) ^ 2) / 4     'La 2ème fenetre s'appelle "Loads_Result
        End Sub
     
        Public Sub VarB_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VarB.TextChanged
            Loads_Result.LBL_C.Text = (Math.PI * (VarA - 2 * VarB) ^ 2 )/ 4
        End Sub

    Et celle de mon secondaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub Loads_Result_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
             Calcul_coeff()    'appelle de la sub
         End Sub
     
        ' --- Calcul de C ---
        Public Sub Calcul_coeff()
             LBL_C.Text = Format((Math.PI * (TSP.VarA - 2 * TSP.VarB) ^ 2) / 4, ("0.00"))    ' calcul quand la fenetre s'ouvre
        End sub

    J'ai essayé de rendre la chose la plus claire possible j'espère que c'est le cas, merci d'avance pour vos réponses !

  2. #2
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Bonjour

    mais le calcul ne se fait pas en temps réel, il se fait avec les valeurs par défaut de A et B au démarrage et après c'est figé
    avec quelles valeurs de A et B veux tu utiliser?
    sers toi tu my.settings
    http://msdn.microsoft.com/en-us/library/saa62613.aspx

  3. #3
    Membre confirmé Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Par défaut
    Ben A et B sont des variables donc des valeurs comprises entre 0 et l'infini ..enfin un 'petit' infini ^^
    C'est l'opérateur qui la met, mais le Label (C) ne change pas sa valeur (alors qu'il le devrait)

    Je regarde les propriétés de mysettings, merci

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    utilise un délégué Action


    la portion de code dans ton Main :
    La déclaration du délégué dans ta classe main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Private CalculCoef As Action(Of Integer, Integer)
    portion de code à placer dans ton load du main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            VarA.Text = 0
            VarB.Text = 0
            Dim f As Loads_Result = New Loads_Result
            CalculCoef = AddressOf f.Calcul_coeff
            f.Show()
    La gestion des saisies et le passage d'info (dans le main)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        Private Sub VarB_TextChanged(sender As System.Object, e As System.EventArgs) Handles VarB.TextChanged
            If Not EnvoieAuCalcul() Then MessageBox.Show("A et B doivent être des nombres")
        End Sub
     
        Private Sub VarA_TextChanged(sender As System.Object, e As System.EventArgs) Handles VarA.TextChanged
            If Not EnvoieAuCalcul() Then MessageBox.Show("A et B doivent être des nombres")
        End Sub
     
        Function EnvoieAuCalcul() As Boolean
            Dim nombreA As Integer
            Dim nombreB As Integer
            If Integer.TryParse(VarA.Text, nombreA) AndAlso Integer.TryParse(VarB.Text, nombreB) Then
                CalculCoef(nombreA, nombreB)
                Return True
            End If
            Return False
        End Function
    Dans ta fenêtre secondaire , calcul et affichage en direct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ' --- Calcul de C ---
        Public Sub Calcul_coeff(a As Integer, b As Integer)
            Label1.Text = Format((Math.PI * (a - 2 * b) ^ 2) / 4, ("0.00"))
        End Sub
    Place tes fenêtres côte à côte pour voir.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Membre confirmé Avatar de Adakhum
    Homme Profil pro
    Ingénieur Mécanique Numérique
    Inscrit en
    Mars 2014
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur Mécanique Numérique

    Informations forums :
    Inscription : Mars 2014
    Messages : 125
    Par défaut
    Merci beaucoup de t'être donné la peine de tapé tout ce code !

    Je vois mieux la chose, je ne savais pas comment appeler une méthode d'une autre classe et c'est un peu ce qu'on fait là il me semble ?!

    J'ai mit tout le code et j'ai une erreur dès le début (j'ai mit un point d'arrêt), il n'est pas content quand il arrive à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim f As Loads_Result = New Loads_Result
            CalculCoef = AddressOf f.Calcul_coeff
            f.Show()
    au début du main, alors je cherche d'où ça peut venir ..
    En fait il m'affiche direct ta phrase dans une ptite fenêtre "A et B doivent être des nombres" et c'est tout, erreur innerexception .. etc


    EDIT : en fait j'ai mit un point d'arrêt, mais meme quand je met en commentaire ce truc ça fait l'erreur, du coup ..
    InnerException: System.NullReferenceException
    Message="La référence d'objet n'est pas définie à une instance d'un objet."

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Il faut mettre le code ainsi (désolé) sinon l'appel du calcul est fait avant que l'instance n'existe à cause du textchanged
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Dim f As Loads_Result = New Loads_Result
            CalculCoef = AddressOf f.Calcul_coeff
            VarA.Text = 0
            VarB.Text = 0
            f.Show()
    Pour le message d'erreur (c'était un exemple) il faut tester si l'on est pas dans le load (l'init) avec une variable boolean ou traiter les mauvaises saisies autrement. (je l'avais rajouté après pour exemple)
    Autres solution, tu fais des AddHandler dynamique pour le textchanged sur les textBox après les affectations d'init des textbox VarA et VarB. (là je n'ai pas le temps, mais si cela t'intéresse je te montrerai)

    Pour tester fait juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub VarB_TextChanged(sender As System.Object, e As System.EventArgs) Handles VarB.TextChanged
            EnvoieAuCalcul()
         End Sub
     
        Private Sub VarA_TextChanged(sender As System.Object, e As System.EventArgs) Handles VarA.TextChanged
            EnvoieAuCalcul() 
        End Sub
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

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

Discussions similaires

  1. récup et sauvegarde d'un axe dans une 2éme fenétre
    Par kwich-bow dans le forum Interfaces Graphiques
    Réponses: 14
    Dernier message: 04/06/2009, 17h06
  2. [XL-2003] Calculer le temps passé dans une boucle for
    Par mancired dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/05/2009, 15h06
  3. Affichage de l'heure en temps réel dans une interface
    Par T-MAT dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 26/12/2008, 19h08
  4. insertion en temps réel dans une combolist
    Par new_wave dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 05/09/2006, 17h55
  5. Réponses: 4
    Dernier message: 16/06/2006, 03h29

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