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 :

Problème entre MDI et toolStrip


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut Problème entre MDI et toolStrip
    Bonjour à tous

    J'essai de monter un formulaire MDI Form1 et un form2 comme enfant
    Dans mon form2 j'ai un dataGridView avec 6 colonnes que j'initialise dans le formload.

    Maintenant, dans mon forms1 j'ai un toolstrip dans lequel un bouton apparait lorsque je load la form2, ce bouton appel une procédure de la form2 qui est sensé charger le DataGV mais la procédure ne reconnait pas mes colonnes.

    Lorsque je lance la procédure directement du forms2 ça fonctionne mais pas à partir du bouton de la form1.

    quelqu'un sait quoi faire ?

    Merci

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Donne nous donc du code:

    Du Form2_load et du clique sur le bouton du toolstrip

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    ok donc pour aller au plus simple j'ai refait un exemple de ce que je veux dire

    Le code de mon form1 est

    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
    Public Class Form1
        Dim _frm2 As New Form2
     
        Private Sub OuvrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OuvrirToolStripMenuItem.Click
            _frm2.MdiParent = Me
            _frm2.Show()
        End Sub
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
        End Sub
     
        Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
            My.Forms.Form2.Empli()
     
        End Sub
    End Class
    Le code de mon form2 est
    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
    Public Class Form2
     
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            DGView1.ColumnCount = 4
            With DGView1.ColumnHeadersDefaultCellStyle
                .BackColor = Color.Navy
                .ForeColor = Color.White
            End With
            With DGView1
                .Columns(0).Name = "Date"
                .Columns(1).Name = "Symbole"
                .Columns(2).Name = "Prix"
                .Columns(3).Name = "Volume"
            End With
            Empli
                End Sub
     
        Sub Empli()
            MessageBox.Show(DGView1.Columns.Count.ToString)
        End Sub
    End Class
    Donc ma question, Pourquoi losque j'execute le sub empli à partir du Form2_Load j'ai 4 colonnes et lorsque je l'exécute à partir du bouton du toolstrip form1 elle me dit 0.

    merci

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    La manière dont tu instancies (faire le new) ta form2 est... je sais pas si c'est une manière propre ou pas, moi je ne le fais jamais comme ca.

    Moi, a ta place j'aurai fais ca:

    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
    Public Class Form1
        Dim _frm2 As Form2
     
        Private Sub OuvrirToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OuvrirToolStripMenuItem.Click
     
            _frm2.Show()
        End Sub
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            _frm2 = New Form2
            _frm2.MdiParent = Me        
     
        End Sub
     
        Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
            My.Forms.Form2.Empli()
     
        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
    16
    17
    18
    19
    20
    21
    Public Class Form2
     
        Private Sub New()
            DGView1.ColumnCount = 4
            With DGView1.ColumnHeadersDefaultCellStyle
                .BackColor = Color.Navy
                .ForeColor = Color.White
            End With
            With DGView1
                .Columns(0).Name = "Date"
                .Columns(1).Name = "Symbole"
                .Columns(2).Name = "Prix"
                .Columns(3).Name = "Volume"
            End With
            Empli
          End Sub
     
        Sub Empli()
            MessageBox.Show(DGView1.Columns.Count.ToString)
        End Sub
    End Class
    Comme ceci, ton Form2 est créer je pense proprement dans le Form1_Load.

    Ton DGV est automatiquement paramétrés quand tu fais Form2 = New.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 505
    Par défaut
    J'essai d,ajuster ta manière mactwist69 et j'ai une erreur et un avertissement

    l'erreur est
    Erreur 1 'toolStr.Form2.Private Sub New()' n'est pas accessible dans ce contexte, car il est 'Private'. C:\Users\Mario\Documents\Visual Studio 2008\Projects\toolStr\toolStr\Form1.vb 9 17 toolStr
    l'avertissement est
    Avertissement 2 'Private Sub New()' dans le type généré par le concepteur 'toolStr.Form2' doit appeler la méthode InitializeComponent. C:\Users\Mario\Documents\Visual Studio 2008\Projects\toolStr\toolStr\Form2.vb 2 17 toolStr
    j'ai essayé de changer Private Sub New() par Public Sub New() je sais pas ça c'est la bonne chose à faire?

    et je comprend pas pourquoi l'avertissement?

    merci de votre aide

  6. #6
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Oui oui il faut le mettre en public...

    Car basiquement une procédure d'instanciation (New()) doit être appeler de "l'exterieur".

Discussions similaires

  1. problème entre IE et Mozilla firefox
    Par bilb0t dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/06/2005, 17h07
  2. Problème entre Delphi7 et Crystal Report 9
    Par claude dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/11/2004, 16h42
  3. Problème entre IB 6.0 et Access 2000
    Par Polux63 dans le forum InterBase
    Réponses: 3
    Dernier message: 19/04/2004, 10h34
  4. Problème entre Dev-c++ et Borland c++ compiler 5.5
    Par Argonz dans le forum Dev-C++
    Réponses: 6
    Dernier message: 21/10/2003, 16h21
  5. [ODBC] Problème entre access et ODBC
    Par StephCal dans le forum Access
    Réponses: 4
    Dernier message: 09/07/2003, 16h47

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