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 :

[Visual studio 2015] interaction objets créés dynamiquement sur 2 forms


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut [Visual studio 2015] interaction objets créés dynamiquement sur 2 forms
    Bonjour à tous,
    Voila plusieurs heures que je butte sur un petit problème "à la con".
    Sans doutes que quelqu'un pourra m'aider ?

    Dans ma form "principale" je créé (entre autre) une checkbox et 2 label comme suit :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    sub ajtlign()
    ReDim Preserve ChkbxElegDispFisc(contLogmt)
            ChkbxElegDispFisc(contLogmt) = New CheckBox
            With ChkbxElegDispFisc(contLogmt)
                .Top = 10 + 25 * contLogmt
                .Left = 430
                .Text = "Eligible dispositif fiscal"
                .Visible = True
                .Width = 130
               .Tag = contLogmt
            End With
            AddHandler ChkbxElegDispFisc(contLogmt).CheckedChanged, AddressOf DispFiscal
            TabPage2.Controls.Add(ChkbxElegDispFisc(contLogmt))
     
            ReDim Preserve EtqDureeDispFisc(contLogmt)
            EtqDureeDispFisc(contLogmt) = New Label
            With EtqDureeDispFisc(contLogmt)
                .Top = 10 + 25 * contLogmt
                .Left = 750
                .Width = 50
                '.Text = "duréeDispFisc"
                .Visible = True
            End With
            TabPage2.Controls.Add(EtqDureeDispFisc(contLogmt))
     
            ReDim Preserve EtqDeducDispFisc(contLogmt)
            EtqDeducDispFisc(contLogmt) = New Label
            With EtqDeducDispFisc(contLogmt)
                .Top = 10 + 25 * contLogmt
                .Left = 800
                '.Text = "deducDispFisc"
                .Visible = True
            End With
            TabPage2.Controls.Add(EtqDeducDispFisc(contLogmt))
    end sub
     
    Sub DispFiscal()
            For i = 1 To contLogmt Step 1
                If ChkbxElegDispFisc(i).Checked Then
                    Form_DispFiscal.Show()
                End If
            Next 'i
        End Sub
    Vous l'aurez compris, lorsque l'utilisateur coche la checkbox, une fenêtre s'affiche.
    Dans celle-ci l'utilisateur il doit renseigner deux champs (TextBox_DeducFisc et TextBox_DureeDispFic).
    Une fois que l'utilisateur aura validé sa saisie, les deux label crées dynamiquement dans la form principale devront afficher la saisie de l'utilisateur.
    Pour ce faire je pensais utiliser le code suivant (dans la form DispFiscal):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Public ChkBox_Org As CheckBox
     
        Private Sub Button_Valid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Valid.Click
     
                ChkBox_Org = (TryCast(sender, CheckBox))
                Form_Principale.EtqDeducDispFisc(ChkBox_Org.Tag).Text = TextBox_DeducFisc.Text
                Form_Principale.EtqDureeDispFisc(ChkBox_Org.Tag).Text = TextBox_DureeDispFic.Text
                Me.Close()
     
        End Sub
    Malheureusement ce code ne fonctionne pas (ça aurait été trop beau)

    J'aimerai également que si l'utilisateur décoche puis recoche la checkbox, les informations qu'il avait saisi précédemment soient affichées dans les textbox de la fenêtre.
    Je pensais donc utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
                  ChkBox_Org = (TryCast(sender, CheckBox))
            'MsgBox(Form_Principale.ChkBox_Org.Tag)
            TextBox_DeducFisc.Text = Form_Principale.EtqDeducDispFisc(ChkBox_Org.Tag).Text
            TextBox_DureeDispFic.Text = Form_Principale.EtqDureeDispFisc(ChkBox_Org.Tag).Text
        End Sub
    Ce code en fonctionne pas non plus ...

    Vraisemblablement je n'arrive pas à récupérer le tag de la checkbox d'orgine.
    Quelqu'un aurait une idée ?

    Merci d'avance pour votre aide

  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
    Bonsoir,

    Il faut que tu revois cette partie là car la signature de ta sub n'est pas bonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub DispFiscal()
            For i = 1 To contLogmt Step 1
                If ChkbxElegDispFisc(i).Checked Then
                    Form_DispFiscal.Show()
                End If
            Next 'i
        End Sub
    Comme ceci, ce qui veut dire que lorsque l'utilisateur cochera la case alors tu rentreras dans cette procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'A titre d'exemple :
    Sub DispFiscal(sender as object, , e as EventArgs)
        'On récupère l'objet qui a déclenché l'event CheckedChanged
        dim Chb as Checkbox = trycast(sender, checkbox)
        'On affiche la propriété Text de l'objet qui a déclenché l'event CheckedChanged
        msgbox(Chb.Text)
    End Sub
    Maintenant il faut également prendre conscience que l'event CheckedChanged est déclenché lors du chargement du formulaire donc il faudra prévoir une valeur booléenne de manière à éviter cela au 1er chargement de ton programme !!!!!

    Pour ce qui est du passage de paramètres, je te recommande vivement de le faire à l'aide d'une instance de ton Form3 en lui créant un constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Class Form3
     
        sub new(DeducFisc as CheckBox, DureeDispFic As CheckBox )
            InitializeComponent()
            TextBox_DeducFisc.Text = DeducFisc.Tag.Tostring
            TextBox_DureeDispFic.Text = DureeDispFic.Tag.Tostring
        end sub
     
    end class
    Donc en variable globale tu déclares :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Private Frm3 as Form3 = nothing
    Pour instancier avec passage de paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Frm3  = new form3(ChkbxElegDispFisc(contLogmt),EtqDureeDispFisc(contLogmt))
    Frm3.showdialog()
    L'idée est là, à toi d'adapter tout ça avec un minima de bon sens.

    ++

  3. #3
    Membre très actif
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Par défaut
    Nickel, merci beaucoup.
    En passant par un variable publique pour récupérer le "numéro" de la checkbox, ça marche parfaitement.

    Merci beaucoup pour ton aide

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

Discussions similaires

  1. [Débutant] Web Service sur Application en VB dans Visual Studio 2015
    Par Carotsh dans le forum Framework .NET
    Réponses: 0
    Dernier message: 05/11/2015, 14h24
  2. Ajouter des Listener sur des objets créés dynamiquement
    Par floctc dans le forum Composants
    Réponses: 10
    Dernier message: 23/04/2010, 16h35
  3. Réponses: 9
    Dernier message: 31/05/2006, 11h56

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