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

Windows Forms Discussion :

vb.net - Créer un contrôle sur une autre form


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut vb.net - Créer un contrôle sur une autre form
    Bonjour à tous.

    Voici mon problème : j'ai deux fenêtres côte à côte. Une avec un affichage et l'autre avec des contrôles.
    J'ai un bouton sur la seconde, et j'aimerai qu'il créé un panel dans la première. Comment faire ?

    Voici la situation en image :

  2. #2
    Membre du Club
    Inscrit en
    Février 2012
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 37
    Points : 55
    Points
    55
    Par défaut
    Pourquoi ne pas créer une variable de type form dans ta fenêtre d'action et de passer ta fenêtre Map Manager en paramètre du constructeur, tu pourras ainsi y accéder dans ton formulaire d'action.

    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
     
    public class frmAction
     
    private _ftmMap as form
     
    public sub new(byref frmMap as form)
    _frmMap = frmMap
    end sub
     
    Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
    dim lbl as new label
    lbl.text = "J'ai ajouté un label"
    lbl.left = 10
    lbl.top = 10
    _frmMap.controls.add(lbl)
    end sub
     
    end class
    avec le code ci-dessus tu verras que sur le click du bouton add du formulaire d'action, j'ajoute un label au formulaire associé

  3. #3
    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
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Une autre méthode est d'utiliser le délégué Action(T1, T2, T3) pour passer une méthode en tant que paramètre.

    Appelons frmManager la fenêtre qui comporte le bouton d'ajout et frmManagedByAction (titre : maps managers) celle qui reçoit les ordres.
    Code vb.net : 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
    Public Class frmManager
     
        Private fManaged As frmManagedByAction ' defini maps manager
        Public AjouteUnPanel As Action(Of String, Integer, Integer)
     
        Private Sub frmManager_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            fManaged = New frmManagedByAction ' cré maps manager
            fManaged.Show()
            AjouteUnPanel = AddressOf fManaged.AjoutePanel ' note la méthode d'ajout de panel de maps manager
        End Sub
     
        Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
            AjouteUnPanel(txtNom.Text, txtX.Text, txtY.Text)
        End Sub
     
    End Class

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Class frmManagedByAction
    ' la fenêtre maps manager
     
        Public Sub AjoutePanel(ByVal Nom As String, x As Integer, y As Integer)
            Dim pan As New Panel
            pan.Name = Nom
            pan.Left = x
            pan.Top = y
            pan.BackColor = Color.PaleTurquoise
            Me.Controls.Add(pan)
        End Sub
     
    End Class
    Ainsi c'est la fenêtre maps manager qui gére ses contrôles (elle même), elle reçoit juste l'ordre de le faire et les paramètres nécessaires.

  4. #4
    Membre du Club
    Inscrit en
    Février 2012
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 37
    Points : 55
    Points
    55
    Par défaut
    La solution d'rvt26 est meilleur mais je ne voulais pas rentrer dans un développement plus poussé
    juste une petite modification à ton code rvt26 permettant l'ajout non typé, je vois la question venir si tu le permets

    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
     
    Public Class frmManager
        Private fManaged As frmManagedByAction
        Public AjouteControl As Action(Of Type, String, Integer, Integer)
     
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            fManaged = New frmManagedByAction
            fManaged.Show()
            AjouteControl = AddressOf fManaged.AjouteControl
     
        End Sub
     
        Private Sub btnAddPanel_Click(sender As System.Object, e As System.EventArgs) Handles btnAddPanel.Click
            AjouteControl(GetType(Panel), txtNom.Text, txtX.Text, txtY.Text)
        End Sub
     
        Private Sub btnAddTextbox_Click(sender As System.Object, e As System.EventArgs) Handles btnAddTextbox.Click
            AjouteControl(GetType(TextBox), txtNom.Text, txtX.Text, txtY.Text)
        End Sub
     
        Private Sub btnAddLabel_Click(sender As System.Object, e As System.EventArgs) Handles btnAddLabel.Click
            AjouteControl(GetType(Label), txtNom.Text, txtX.Text, txtY.Text)
        End Sub
    End Class
    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
     
    Public Class frmManagedByAction
     
        Public Sub AjouteControl(ObectType As Type, ByVal Nom As String, x As Integer, y As Integer)
            If Not Me.Controls.ContainsKey(Nom) Then
                Dim obj As Control = Activator.CreateInstance(ObectType)
                obj.Name = Nom
                obj.Left = x
                obj.Top = y
                obj.BackColor = Color.PaleTurquoise
                Me.Controls.Add(obj)
            End If
        End Sub
     
    End Class

  5. #5
    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
    Points : 5 100
    Points
    5 100
    Par défaut
    Citation Envoyé par strikel Voir le message
    juste une petite modification à ton code rvt26 permettant l'ajout non typé, je vois la question venir si tu le permets
    Pas de soucis, toutes idées ou évolutions sont les bienvenues (Je suis parti sur un principe simple, pour une première approche, que l'on peut faire évoluer suivant les besoins)
    Merci pour ce complément très intéressant

Discussions similaires

  1. cliquer pour aller sur une autre form
    Par dispa dans le forum Windows Forms
    Réponses: 12
    Dernier message: 27/05/2007, 11h51
  2. Acceder a une TextBox qui se trouve sur une Autre Form
    Par le_contact dans le forum Windows Forms
    Réponses: 15
    Dernier message: 14/04/2007, 00h10
  3. [C#] Modifier Propriété d'un contrôle d'une autre Form
    Par sara21 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/09/2006, 20h41
  4. [C#2.0]Dupliquer des controles sur une autre form
    Par chnew dans le forum Windows Forms
    Réponses: 5
    Dernier message: 12/05/2006, 09h05
  5. [VB.NET] Comment recuperer de donnée sur une autre form?
    Par weelo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 02/04/2006, 13h47

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