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 :

Appeler un événement d’un composant dans une autre forme


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Par défaut Appeler un événement d’un composant dans une autre forme
    Bonjour tout le monde,
    J’ai crée un userform qui a des comboboxs, j’ai programmé l’événement SelectedValueChanged, Je veux créer une nouvelle userform qui as les même comboboxs, avec d’autre composants, je ne sais pas comment faire ?
    Dans le load de la nouvelle userform j’ai initialisé un instance de l’ancienne forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim fom = New l’ancienne_form
    Après j’ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For Each c In fom.Controls
                Me.Controls.Add(c)
            Next
    Il ne me ramène pas toutes les comboboxs.

    Et merci.

  2. #2
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Par défaut
    Bonjour,
    voici le code qui marche pour les textboxs les labels
    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
    For Each c In Me.Controls
                If TypeOf c Is TextBox Then
                    tb = New TextBox
                    tb.Text = c.Text
                    tb.Name = c.Name
                    tb.Location = c.Location
                    tb.Visible = c.Visible
                     userform.Controls.Add(tb)
                End If
                If TypeOf c Is ComboBox Then
                    cb = New ComboBox
                    cb.Text = c.Text
                    cb.Name = c.Name
                    cb.Location = c.Location
                    userform.Controls.Add(cb)
                End If
                If TypeOf c Is Label Then
                    l = New Label
                    l.Name = c.Name
                    l.Text = c.Text
                    l.Location = c.Location
                     userform.Controls.Add(l)
                End If
            Next
    mais pour les combobox la liste est vide malgré que j'ai les rempli dans l'ancienne forme, j'ai seulement le texte du combobox qui été dans l'ancienne forme.
    Merci

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Par défaut
    Voici le code il me récupère la liste des items:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If TypeOf c Is ComboBox Then
                    cb = New ComboBox
                    For i = 0 To CType(c, ComboBox).Items.Count - 1
                         cb.Items.Add(CType(c, ComboBox).Items.Item(i))
                    Next
                    cb.Text = c.Text
                    cb.Name = c.Name
                    cb.Location = c.Location
                    userform.Controls.Add(cb)
                End If
    Mais l’événement ne se déclanche pas!
    Merci.

  4. #4
    Membre éprouvé
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Billets dans le blog
    2
    Par défaut Marshall
    en C# on appelle ça le marshalling
    mais ça fais longtemps que je ne l'ai pas utilisé
    l'idée est de récupérer l'evt sur la nouvelle fenêtre et de ce l'approprier sinon ça va bugger ...

  5. #5
    Membre expérimenté
    Avatar de Proteus91
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 150
    Par défaut Questions
    Hello kika10,

    Excuse moi je pense que je n'ai peut être pas bien compris ta demande. Mais sur le titre de ton problème tu marques que tu souhaites appeler un évènement d'un composant d'une autre forme.

    Et quand je regarde le contenu de tes messages tu marques que tu souhaites récupérer le contenu d'une ComboBox.

    P.S. Que tu récupères des ComboBox vide ne me choque pas. Si c'est possible j'aimerai que tu me donnes plus de renseignement sur ton problème pour pouvoir t'aider.

  6. #6
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut userform nouveau,clone
    bonjour,
    herites la fortune de ton grand pere,s'il est assez riche,pas besoin de travailler encore ca sert à rien ou herites de ton travail precendent.
    caramba ,et l'heritage ca serait plus efficae,car tu herites de tout y compris l'evenement programme.
    tu n'as qu'a cree un nouveau form comme suit:
    1/pointe toi sur projet
    2/ajouter un nouvel element ->elements commun->windows form->formulaire herite

    il herite de tout y compris de l'evenement et de sa gestion.
    en plus tu peux rajouter d'autres controles si tu veux en plus.
    au lieu d'ecrire tout ce "boiler-plat code"......
    bon code

  7. #7
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 254
    Par défaut
    Merci l’équipe, ça fait long temps,

    @BROWNY : oui il faut récupérer l’événement mais comment faire ?

    @Proteus91 : dans mon projet je veux faire le même traitement pour chaque table de ma base, donc je veux le faire pour une seul table et pour les autres table je veux juste appeler les méthode créer, par ce que j’ai des combo box j’ai les rempli dans la premier formule, j’ai programmé des événements pour ce combo, et pour ne pas refaire la création des combo et son remplissage, je veux juste écrire une instruction qui va me ramener le combo, son contenu et l’événement ?
    @MABROUKI : j’ai les fais m’ai il m’affiche une erreur :
    Impossible de trouver le fichier 'c:\Program Files\Microsoft Visual Studio 8\Common7\IDE\designation.xml'.
    Détails
    Par ce que dans le load de ma forme je charge un fichier (.Xml), qui se trouve dans le (bin\Debug).
    Merci l’équipe.

  8. #8
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut heritage de control
    bonjour,
    comme tu charges un fichier xsd dont le nom et le chemin changent suivant l'user ,il vaut mieux ne pas coder en "dur" dans ton modele la recherche du fichier ,mais le parametrer avec un open dialog.
    il faut :
    -integrer un opendialog dans ta forme par code dans l'evenement load
    ci-apres code exemple d'un form avec opendialog

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    'voici un exemple formmulaire ancetre avec un dataset:
    '1/il comporte un combobox1,un textbox1 & un datagridview1
    'pour un fichier schema xsd d'une base mdb avec une table mondoc.xml
     
    '2/au lancement il affiche une boite de dialogue pour le schema xds
    '-charge le combobox avec la premiere datable(personnel1)
    '-charge un datagridview avec la premiere datable(personnel1)
    '-quand on selectionne un item dans combobox,il l'affiche dans le textbox
    '-il suffit dans le meme projet d'heriter de ce formulaire
     
    '3/les formulaires herites demande zero code.
     
    '4/Sauf quand on veut rajouter quelque chose de -commun-à tous les heritiers-on le fait sur
    'sur  le formulaire ancetre,et les formulaires heritiers heritent automatiquement herite 
     
    '5/si on veut rajouter quelque chose specifique sur un formulaire heritier c'est possible.
     
    '6/il faut que l'ancetre et les heritiers soient dans le meme projet. 
     
    Imports System
    Imports System.Data
    Imports System.Xml
     
    Public Class frmAncetre
        Private Sub frmAncetre_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Dim nomFichChemin As String = ""
            Dim openFile As New OpenFileDialog
            openFile.Filter = "Fichiers XML(*.xsd)|*.xsd"
            If openFile.ShowDialog = Windows.Forms.DialogResult.OK And _
            Len(openFile.FileName) <> 0 Then
                nomFichChemin = openFile.FileName
            Else
                MessageBox.Show("Erreur dans ouverture fichier")
                Exit Sub
            End If
            'Cree XmlDocument.
            Dim monDoc As XmlDataDocument = New XmlDataDocument()
            'Charge schema xsd.
            monDoc.DataSet.ReadXmlSchema(nomFichChemin)
            'Charge donnees XML
            monDoc.Load("monDoc.xml")
            'Change le nom sur table avec methode DataSet .
            Dim persoDT As DataTable = monDoc.DataSet.Tables.Item("Personnel1")
            Dim bds As BindingSource = New BindingSource
            bds.DataSource = monDoc.DataSet
            bds.DataMember = monDoc.DataSet.Tables(0).TableName
            Me.ComboBox1.DataSource = bds
            Me.ComboBox1.DisplayMember = persoDT.Columns(1).ColumnName
            Me.ComboBox1.ValueMember = persoDT.Columns(1).ColumnName
     
            Me.DataGridView1.DataSource = bds
     
        End Sub
     
        Private Sub ComboBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
            TextBox1.Text = ComboBox1.SelectedValue.ToString
     
     
        End Sub
    End Class
    il suffit d'heriter de ce formule.les heritiers demandent zero ligne de code....

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/03/2010, 09h21
  2. Appel d'un procedure d'événement dans une autre forme
    Par mounim_taoufik dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/12/2009, 09h22
  3. appel d'un vector créé dans une autre classe
    Par julien25 dans le forum C++
    Réponses: 18
    Dernier message: 22/03/2009, 18h47
  4. Pb d'appel d'un classe (public) dans une autre
    Par MSM_007 dans le forum Général Java
    Réponses: 5
    Dernier message: 12/05/2008, 17h12
  5. Réponses: 5
    Dernier message: 10/10/2007, 13h54

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