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 :

[C#][debutant]Pb de référence circulaire entre plusieurs formulaires


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 55
    Par défaut [C#][debutant]Pb de référence circulaire entre plusieurs formulaires
    Bonjour,

    j'ai deux formulaires "popChoose" et "popChooseSingle" qui peuvent appeler (non simultanément) un meme troisieme formulaire "settings".

    Mon but : je souhaite utiliser "settings" à la maniere de la fenetre de configuration d'une impression (ex : le bouton Préférences).
    Autrement dit, à partir de "popChoose" (resp. "popChooseSingle"), je veux ouvrir settings, configurer des parametres et les sauvegarder, les retourner à la fenetre appelante (ici popChoose), fermer settings, et generer un fichier texte à partir d'un bouton dans popChoose.

    Mon pb : pour passer les parametres d'un formulaire à un autre, j'ai défini "popChoose" et "popChooseSingle" comme owner de "settings". Maintenant quand je veux fermer "settings" par this.Close(), 'this' référence le formulaire qui a appelé "settings". Au final, "settings" et le formulaire qui l'a appelé se ferment.

    Je ne sais pas comment faire pour qu'un formulaire ne soit plus proprietaire d'un autre.
    Je suis completement bloqué.

    Merci pour votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2002
    Messages : 89
    Par défaut
    Quand tu les fais apparaite utilise Form.Show() ou Form.ShowDialog()
    Si tu utilises Form.Show(this) ou Form.ShowDialog(this), la fenetre appelante sera propriétaire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 55
    Par défaut
    on est tout a fait d'accord.

    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
     
    private void btnSettingsClick(object sender, System.EventArgs e)
    {
    	if (comboBox1.Text == "")
    	{
    		MessageBox.Show("You must choose a table in the list before setting the parameters", "Error") ;
    		return;
    	}
     
    	//appelle settings
    	obj_settings = new settings(comboBox1.Text); // champ "tableCorrespondante" dans la generation de fichier
    	obj_settings.Owner = this ;
    	obj_settings.ShowDialog();
     
    }
    Alors a quel moment dois-je utiliser le owner ?

    J'ai besoin de passer des parametres "dans les 2 sens".
    1) "popChooseSingle" passe 'nomTable' au constructeur de "settings"
    2) "settings" renvoie les parametres definies pour cette table en vue de la generation de fichier

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2002
    Messages : 89
    Par défaut
    J'ai du mal a comprendre. Les deux formulaire doivent être simultanément ouverts et communiquer ensemble?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 55
    Par défaut
    le 1er ouvre le 2eme avec showDialog.
    Le 1er reste ouvert.
    On travaille sur le 2eme. La validation sur le 2eme (formulaire "settings") doit permettre le passage de parametres au 1er formulaire et fermer le 2eme.
    Je suis donc a present sur le 1er formulaire et je peux generer mon fichier en fonction des parametres que j'ai recupéré.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2002
    Messages : 89
    Par défaut
    J'aurai fait autrement alors (dis moi ce que tu en penses),

    J'aurai exposé en tant que propriétés publiques tes paramètres. Genre si l'utilisateur rentre un paramètre dans une textbox du formulaire 2 j'aurais un code comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public string ParametreDeMaTextBox
    {
        get
        {
           return TextBox1.text;
        }
    }

    comme ca tu récupère le résultat dans ton formulaire 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Formulaire2 F2 = new Formulaire2()
    if(F2.ShowDialog()==DialogResult.OK)
    {
    string MaVariable=F2.ParametreDeMaTextBox;
    }
    Qu'en penses tu?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/01/2013, 05h03
  2. Référence circulaire entre projets VS2005
    Par Captain_JS dans le forum C++
    Réponses: 8
    Dernier message: 23/07/2008, 02h42
  3. Partager un control entre plusieurs formulaires
    Par Romers dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/02/2008, 09h20
  4. Réponses: 1
    Dernier message: 22/08/2007, 00h05
  5. Réponses: 9
    Dernier message: 10/07/2006, 14h52

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