Envoyer un paramètre à une form que l'on va appeler

Résolu
chambreur Messages postés 30 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 15 mai 2014 - 7 janv. 2014 à 11:30
chambreur Messages postés 30 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 15 mai 2014 - 7 janv. 2014 à 16:28
Bonjour,
J'ai une form "menu" (dans laquelle il y a un stripfile), lorsque je sélectionne "new" et "open" je souhaite appeler une seule et unique autre form "Edit" car le fonctionnement de "new" et "open" sont les mêmes.
Sauf que si j'ai sélectionné "new", je vais utiliser un chemin de fichier par défaut puis aller dans "Edit" alors que si je sélectionne "open" je permets de choisir le chemin du fichier via un openFileDialog puis aller dans "Edit".

Là ou je suis bloqué c'est que je n'arrive pas à indiquer/donner à la form "edit" le chemin. En gros, je ne sais pas comment envoyer un paramètre à une form.

Je pense que la solution serait de passer par une classe commune que j'invoquerai

FormEdit FrmLoad = new FormEdit() {class };
FrmLoad.ShowDialog();

Mais je sais pas si il n'y a pas plus simple et si c'est possible.

Un coup de main svp? :)

5 réponses

DefiAzzana Messages postés 6 Date d'inscription lundi 6 janvier 2014 Statut Membre Dernière intervention 8 janvier 2014 2
7 janv. 2014 à 13:46
InitializeComponent est l'initialisation de l'affichage en gros. Tu peux donc créer un nouveau constructeur (et ajouter l'appel à InitializeComponent) ou modifier celui existant pour y inclure ta variable path et la passer à ta FormEdit.

Ce qui donnerait dans ton les cas le code suivant :

OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = " Xml (*.xml)|*.xml";
if (openFileDialog.ShowDialog() == DialogResult.OK)
string path = openFileDialog.FileName;
FormEdit FrmLoad = new FormEdit(path ) ;
NoQuit = 1; // Il s'agit de ma variable qui me permet de ne pas quitter l'appli quand je fais le this.close
this.Close(); // Pour fermer le menu principal afin de ne pas avoir 2 fenetres ouvertes en meme temps
FrmLoad.Text = "Edit from open "; //Vu que j'ai une seul form "edit" je personnalise un peu en disant qu'on vient du open
FrmLoad.ShowDialog(); // J'appel ma nouvelle form pour faire un nouveau scénario
2
DefiAzzana Messages postés 6 Date d'inscription lundi 6 janvier 2014 Statut Membre Dernière intervention 8 janvier 2014 2
7 janv. 2014 à 11:34
Pourquoi ne modifies-tu pas le constructeur de ta classe FormEdit pour y inclure un paramètre String optionnel qui contiendrait ton chemin ?

Du genre :

public FormEdit(String editPath = null) {
}
0
chambreur Messages postés 30 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 15 mai 2014
Modifié par chambreur le 7/01/2014 à 13:45
Merci pour ta réponse.
Mais je ne vois pas trop ce que tu veux dire, si je fais ça:
        public FormEdit(String editPath = null)
        {
            InitializeComponent();
        }

l'ennuie quand on utilise les forms c'est que automatiquement visual crée la méthode "initializecomponent" qui va initialiser les variables nécessaires au lancement de la form et que du coup editPath n'est pas connu à l'intérieur de cette méthode.
0
chambreur Messages postés 30 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 15 mai 2014
7 janv. 2014 à 14:36
ok merci, je vois l'idée.

Mon soucis est plutôt de l'autre côté. Je souhaiterai que la méthode "private void FormEdit_Load" connaisse cette variable "path" car j'en ai besoin quand je fais appel à la fonction
'OldValue = edit.LoadInitialDatas(TextBoxs, labels,path);'

Le problème est qu'avec l'exemple ou j'en suis ci-dessous, la methode FormEdit et InitializeComponent connaissent la variable "path" mais pas FormEdit_Load.

Comment faire?

        public FormEdit(string path)
        {
            InitializeComponent(path);
        }

        private void FormEdit_Load(object sender, EventArgs e)
        {
            TextBox[] TextBoxs = { textBox1, textBox2}; 
            Label[] labels = { label1, label2, label3, label4,}; 
            Edit edit = new Edit(); // Création de l'objet 
            OldValue = edit.LoadInitialDatas(TextBoxs, labels,path);          
        }

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chambreur Messages postés 30 Date d'inscription mardi 19 août 2008 Statut Membre Dernière intervention 15 mai 2014
7 janv. 2014 à 16:28
C'est bon, j'ai fini par trouver :)

Il faut simplement déclarer une variable
"private string chemin = null;" dans le constructeur "Edit"

Puis on affecte la valeur de notre path à notre chemin comme ci-dessous:

        public FormEdit(string path)
        {
            InitializeComponent();
            chemin = path; 
        }


Ainsi je récupère dans chemin qui est accessible partout la valeur du chemin qui a été rentré dans path.

En tout cas, je te remercie beaucoup pour ton aide DefiAzzana, je n'aurai pas pu trouver sans tes conseils et indications.
0
Rejoignez-nous