Envoyer un paramètre à une form que l'on va appeler [Résolu]

Messages postés
30
Date d'inscription
mardi 19 août 2008
Dernière intervention
15 mai 2014
- - Dernière réponse : chambreur
Messages postés
30
Date d'inscription
mardi 19 août 2008
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? :)
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
6
Date d'inscription
lundi 6 janvier 2014
Dernière intervention
8 janvier 2014
2
Merci
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

Merci DefiAzzana 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de DefiAzzana
Messages postés
6
Date d'inscription
lundi 6 janvier 2014
Dernière intervention
8 janvier 2014
0
Merci
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) {
}
Commenter la réponse de DefiAzzana
Messages postés
30
Date d'inscription
mardi 19 août 2008
Dernière intervention
15 mai 2014
0
Merci
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.
Commenter la réponse de chambreur
Messages postés
30
Date d'inscription
mardi 19 août 2008
Dernière intervention
15 mai 2014
0
Merci
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);          
        }

Commenter la réponse de chambreur
Messages postés
30
Date d'inscription
mardi 19 août 2008
Dernière intervention
15 mai 2014
0
Merci
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.
Commenter la réponse de chambreur

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.