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 :

Récupérer le chemin d'un folderbrwoserdialog, et activer un composant!


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut Récupérer le chemin d'un folderbrwoserdialog, et activer un composant!
    Bonjours,
    Je sais comment récupérer le chemin d'un folderbrowserdialog, mais le problème, c'est de récupérer le folderbrowserdialog dans la form1, et l'utiliser dans une autre form!
    J'ai bien mis en public!
    Mais le folderBrowserDialog, se met a zéro je croit, c'est pour ça que sa fonctionne pas!
    Alors une petite aide!
    Puis j'ai eu un problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                this.contextMenuStrip1.Enabled = true;
                this.contextMenuStrip2.Enabled = true;
    Sa les active pas, même en allant sur le composant et en mettant enabled, sa ne fonctionne pas!
    Merci d'avance!

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    Pour les compsants, j'ai réussi!
    J'ai supprimer la ligne, et remis, et sa a fonctionner!
    Bizarre?!
    Puis le folderBrowserDialog, je n'est pas trouver de solution!

  3. #3
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 639
    Points : 2 148
    Points
    2 148
    Par défaut
    Tu peux nous montrer comment tu utilises ton FolderBrowserDialog ?

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    Voilà a quoi il sert:
    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     private void ouvrirToolStripButton_Click(object sender, EventArgs e)
            {
                if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        //int num1 = (int)this.folderBrowserDialog1.ShowDialog();
                        if (File.Exists(this.folderBrowserDialog1.SelectedPath + "\\Data\\Quests.rvdata2"))
                        {
                            using (BinaryReader binaryReader = new BinaryReader((Stream)File.Open(this.folderBrowserDialog1.SelectedPath + "\\Data\\Quests.rvdata2", FileMode.Open)))
                            {
                                int length = binaryReader.ReadInt32();
                                this.quests = new Quest[length];
                                this.listBox1.Items.Clear();
                                for (int index1 = 0; index1 < length; ++index1)
                                {
                                    this.quests[index1] = new Quest("");
                                    this.quests[index1].Name = binaryReader.ReadString();
                                    this.quests[index1].Giver = binaryReader.ReadString();
                                    this.quests[index1].Location = binaryReader.ReadString();
                                    this.quests[index1].Description = binaryReader.ReadString();
                                    this.quests[index1].QuestNote = binaryReader.ReadString();
                                    this.quests[index1].Level = binaryReader.ReadInt32();
                                    this.quests[index1].IconIndex = binaryReader.ReadInt32();
                                    this.quests[index1].NumberObjectives = binaryReader.ReadInt32();
                                    this.listBox1.Items.Add((object)this.quests[index1].Name);
                                    this.quests[index1].Objectives.Clear();
                                    for (int index2 = 0; index2 <= this.quests[index1].NumberObjectives; ++index2)
                                        this.quests[index1].Objectives.Add(binaryReader.ReadString());
                                    int num2 = binaryReader.ReadInt32();
                                    for (int index2 = 0; index2 < num2; ++index2)
                                    {
                                        this.quests[index1].items.Add(new Item(0, 0, 0));
                                        this.quests[index1].items[index2].type = binaryReader.ReadInt32();
                                        this.quests[index1].items[index2].itemid = binaryReader.ReadInt32();
                                        this.quests[index1].items[index2].itemnumber = binaryReader.ReadInt32();
                                    }
                                    this.quests[index1].Catégorie = binaryReader.ReadString();
                                    this.quests[index1].EvCommun = binaryReader.ReadInt32();
                                    this.quests[index1].Banniere = binaryReader.ReadString();
                                    this.quests[index1].Teinte = binaryReader.ReadInt32();
                                    this.quests[index1].Objective0 = binaryReader.ReadString();
                                }
                            }
                        }
                        if (File.Exists("Projet\\Data\\Items.rvdata2"))
                            File.Delete("Projet\\Data\\Items.rvdata2");
                        if (File.Exists("Projet\\Data\\Armors.rvdata2"))
                            File.Delete("Projet\\Data\\Armors.rvdata2");
                        if (File.Exists("Projet\\Data\\Weapons.rvdata2"))
                            File.Delete("Projet\\Data\\Weapons.rvdata2");
                        if (File.Exists("Projet\\Graphics\\System\\IconSet.png"))
                            File.Delete("Projet\\Graphics\\System\\IconSet.png");
                        if (File.Exists(this.folderBrowserDialog1.SelectedPath + "\\Data\\Items.rvdata2"))
                            File.Copy(this.folderBrowserDialog1.SelectedPath + "\\Data\\Items.rvdata2", "Projet\\Data\\Items.rvdata2");
                        if (File.Exists(this.folderBrowserDialog1.SelectedPath + "\\Data\\Armors.rvdata2"))
                            File.Copy(this.folderBrowserDialog1.SelectedPath + "\\Data\\Armors.rvdata2", "Projet\\Data\\Armors.rvdata2");
                        if (File.Exists(this.folderBrowserDialog1.SelectedPath + "\\Data\\Weapons.rvdata2"))
                            File.Copy(this.folderBrowserDialog1.SelectedPath + "\\Data\\Weapons.rvdata2", "Projet\\Data\\Weapons.rvdata2");
                        if (File.Exists(this.folderBrowserDialog1.SelectedPath + "\\Graphics\\System\\IconSet.png"))
                            File.Copy(this.folderBrowserDialog1.SelectedPath + "\\Graphics\\System\\IconSet.png", "Projet\\Graphics\\System\\IconSet.png");
                        this.LoadTimer1.Enabled = true;
                        this.ouvrirToolStripButton.Enabled = false;
                        this.enregistrerToolStripButton.Enabled = true;
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Un projet est ouvert!", "Ouverture impossible:");
                    }
                }
            }

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Tu as utilisé un composant "FolderBrowserDialog" dans le designer de tes formulaires.
    Le code d'initialisation est donc indépendant entre les 2.

    Si dans l'autre formulaire tu veux utiliser le même, alors il te suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Form1 monAutreForm = Application.OpenForms.OfType<Form1>().First();
    FolderBrowserDialog fbd = monAutreForm.folderBrowserDialog1;
    fbd.ShowDialog();//etc...
    Après 2 remarques :
    - C'est moche de déclarer une variable en publique, il faut plutôt l'encapsuler dans une propriété ou une méthode.
    - Il y a une doc MSDN en ligne sur les classes, des exemples en lignes, etc... n'hésites pas à la consulter. Aussi, tu peux aller sur n'importe quelle classe Microsoft et faire "F1" avec le curseur dessus, tu auras la doc correspondante.

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    Merci pour ta réponse!
    J'ai fait ceci:
    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 IconSelector()
            {
                InitializeComponent();
                Form1 monAutreForm = Application.OpenForms.OfType<Form1>().First();
                FolderBrowserDialog fbd = monAutreForm.folderBrowserDialog1;
                if (File.Exists(fbd.SelectedPath + "\\Graphics\\System\\IconSet.png"))
                {
                    MemoryStream memoStream2 = new MemoryStream(File.ReadAllBytes(fbd.SelectedPath + "\\Graphics\\System\\IconSet.png"));
                    this.pictureBox1.Image = new Bitmap(memoStream2);
                    memoStream2.Close();
                }
                this.img = new Bitmap(this.pictureBox1.Image);
                this.pictureBox1.Size = new Size(pictureBox1.Image.Width, pictureBox1.Image.Height);
                this.Width = this.pictureBox1.Image.Width +17;
            }
    Et sa fonctionne, merci beaucoup!

    Citation Envoyé par Ph_Gr
    - C'est moche de déclarer une variable en publique, il faut plutôt l'encapsuler dans une propriété ou une méthode.
    Comment ça?
    Désoler, mais j'apprend le langage C#!

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par iVarlix Voir le message
    Comment ça?
    Désoler, mais j'apprend le langage C#!
    En fait, c'est une remarque qui concerne la méthodologie "orientée objet" surtout. Si tu apprends C#, il te faut aussi apprendre comment fonctionne la méthodologie orientée objet, et ça c'est valable non seulement pour C# mais aussi pour C++, Eiffel, etc...

    En OO, il est préférable de ne pas mettre une variable membre publique mais plutôt de faire un accesseur.

    Exemple d'un accesseur avec ta variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public FolderBrowserDialog MyFolderBrowserDialog { get { return folderBrowserDialog1 ; } }
    En remettant "folderBrowserDialog1" en privé.

    Puis tu peut utiliser cette propriété ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Form1 monAutreForm = Application.OpenForms.OfType<Form1>().First();
    FolderBrowserDialog fbd = monAutreForm.MyFolderBrowserDialog;
    C'est une sécurité en fait.

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 102
    Points : 41
    Points
    41
    Par défaut
    Merci pour ta réponse rapide!
    J'ai essayer et sa fonctionne, mais quel risque qu'on peut avoir si on met en public?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par iVarlix Voir le message
    J'ai essayer et sa fonctionne, mais quel risque qu'on peut avoir si on met en public?
    Si par exemple tu donnes le composant à quelqu'un d'autre, tu ne voudrais pas qu'il s'amuse à modifier ton instance "folderBrowserDialog1" en faisant quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Form1 monAutreForm = Application.OpenForms.OfType<Form1>().First();
    monAutreForm.folderBrowserDialog1 = null;

Discussions similaires

  1. Comment récupérer le chemin d'une table liée
    Par ptitepunk dans le forum Access
    Réponses: 2
    Dernier message: 15/09/2005, 11h47
  2. Récupérer le chemin complet de l'appli
    Par alainpeniche dans le forum Windows
    Réponses: 3
    Dernier message: 10/08/2005, 15h03
  3. [Sources]Récupérer le chemin d'un objet OLE
    Par Mr.Gus dans le forum Contribuez
    Réponses: 9
    Dernier message: 12/05/2005, 11h11
  4. Récupérer le chemin de l'alias a partir du database
    Par rippoz dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/08/2004, 15h59
  5. Récupérer le chemin d'accés du PFile.
    Par Laurent Dardenne dans le forum Administration
    Réponses: 7
    Dernier message: 03/02/2004, 18h21

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