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

C# Discussion :

Passer une variable d'une fenetre parent à une fenetre fille ( WindowsForm) [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 11
    Points
    11
    Par défaut Passer une variable d'une fenetre parent à une fenetre fille ( WindowsForm)
    Salut,

    J'aimerais savoir si c'est possible mais je ne sais pas si je me suis très bien exprime dans les termes donc je serai plus explicatif ici.

    J'ai une fenetre Add Reservation avec comme code :

    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
    private Reservation reserv()
            {
                if (AR_reservroom_comboBox.Text == "1")
                {
                    return new Group_Reservation
                    {
                        Reservation_num = int.Parse(AR_numreservation_textBox.Text),
                        Agency_num = int.Parse(AR_codeagency_comboBox.Text),
                        Client_ID = int.Parse(AR_clientid_comboBox.Text),
                        Bed_num = int.Parse(AR_reservroom_comboBox.Text),
                        reserv_Date = DateTime.Now
                    };
                }
                else
                {
                    return new Single_Reservation
                    {
                        Reservation_num = int.Parse(AR_numreservation_textBox.Text),
                        Agency_num = int.Parse(AR_codeagency_comboBox.Text),
                        Client_ID = int.Parse(AR_clientid_comboBox.Text),
                        Bed_num = int.Parse(AR_reservroom_comboBox.Text),
                        reserv_Date = DateTime.Now
                    };
                }
            }
    J'ai cree un bouton Continue qui appele une fenêtre AddRoomReservation et j'aimerais pouvoir recuperer la variable Bed_num qui est dans le comboBox.Text et la passer donc dans la fenêtre "fille".

    Ps : Dans AddRoomReservation, je ne veux pas voir apparaître de Textbox pour rentre BedNum.

    Merci pour l'aide.
    Si vous avez une meilleure idée pour realisé une reservation je suis preneur.

    Info : Ma classe Reservation est abstract qui à Single Reservation et Groupe Reservation en heritage.
    Je dois donc trouver un moyen en graphique de gèrer ces deux cas.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Avant de faire le Show() ou le ShowModal() de la forme fille, tu peux passer à une fonction (internal à créer) de la forme fille des paramètres dont la valeur dépendra de l'IHM de la forme mère (BedNum par exemple).

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Je n'ai pas compris du tout. Est-ce que ca te derangerais de m'expliquer en prenant mon code ci-dessous en exemple ?

    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
    72
    73
    74
    75
    76
    77
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using BE;
     
    namespace WindowsFormsApplication1
    {
        public partial class AddRoomForm : Form
        {
            BL.IBL bl;
            public AddRoomForm(BL.IBL bl)
            {
                InitializeComponent();
                this.bl = bl;
                AR_typeroom_comboBox.DataSource = Enum.GetValues(typeof(BE.Room.Room_Type));
            }
     
            private Room room()
            {
                return new Room
                {
                    code_Room = int.Parse(AR_coderoom_textBox.Text),
                    Bed_num = int.Parse(AR_numberbed_comboBox.Text),
                    Type = (Room.Room_Type)AR_typeroom_comboBox.SelectedValue,
                    Price_r = int.Parse(AR_priceroom_textBox.Text),
                    Balcony = AR_balcony_checkBox.Checked,
                    Blackglass = AR_blackglass_checkBox.Checked,
                    Keydoor = AR_keydoor_checkBox.Checked,
                    Minibar = AR_Minibar_checkBox.Checked,
                    Safe = AR_Minibar_checkBox.Checked,
                    Sea_view = AR_Minibar_checkBox.Checked
                };
            }
     
            private void exitToolStripMenuItem_Click(object sender, EventArgs e)
            {
                DialogResult response_room_exit = MessageBox.Show("Are you sure to close this page ?", "Attention", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (response_room_exit == DialogResult.Yes)
                {
                    Close();
                }
            }
     
            private void AddRoom_button_Click(object sender, EventArgs e)
            {
                try
                {
                    bl.add_room(room());
                    MessageBox.Show("Room Added", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Close();
                }
                catch
                {
                    MessageBox.Show("Misses Information", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
     
            private void AR_resetroom_button_Click(object sender, EventArgs e)
            {
                AR_coderoom_textBox.ResetText();
                AR_numberbed_comboBox.ResetText();
                AR_typeroom_comboBox.ResetText();
                AR_balcony_checkBox.Checked = false;
                AR_blackglass_checkBox.Checked = false;
                AR_keydoor_checkBox.Checked = false;
                AR_Minibar_checkBox.Checked = false;
                AR_Safe_checkBox.Checked = false;
                AR_seaview_checkBox.Checked = false;
            }
     
        }
    }
    Le but au final c'est de pouvoir utiliser ma fonction add_reserv avec tous les donnée de ma classe Reservation.

    Merci pour l'aide.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    tu peux crée une propriété public réservation dans ta nouvelle fenêtre que tu affectera depuis ta première fenêtre avant de l'afficher:
    Dans la fenêtre que tu appel (la fenêtre fille comme tu dis)
    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
     
    public Reservation Reserv { get; set; }
     
    public void TraitementReservation()
            {
                Group_Reservation multi = reservation as Group_Reservation;
                Single_Reservation single = reservation as Single_Reservation;
                if (multi != null)
                {
                    //Todo: traitement 1
                }
                else if (single != null)
                {
                    //Todo: traitement 2
                }
            }
    et depuis la fenêtre appelante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    AddRoomReservation fenetre=new AddRoomReservation();
    fenetre.Reserv= //ici ta réservation
    fenetre.TraitementReservation(); //pour effectuer ton traitement suivant la réservation
    fenetre.Show();
    après le traitement je sais pas si tu as besoin de l'appeler depuis la première fenêtre si c'est pas le cas met le à private

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Je teste cela demain et je te tiens au courant.
    Merci en tout cas.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    tu crées un nouveau constructeur de ta fenêtre AddRoomReservation qui reçoit un paramètre.

    Ex : la fenêtre fille (à adapter à ton développement)
    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 partial class Form2 : Form
        {
            private string sValeur; // pour une accessibilité au niveau form
     
            public Form2() // constructeur d'origine
            { InitializeComponent(); }
     
            public Form2(string sVal) // nouveau constructeur avec un paramètre
            {
                InitializeComponent();
                sValeur = sVal; // place la valeur du paramètre reçu dans une propriété de la form
            }
            private void Form2_Load(object sender, EventArgs e)
            {
                label1.Text = sValeur; // pour voir le résultat
            }
        }
    La fenêtre appelante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            private void button1_Click(object sender, EventArgs e)
            {
     
                Form f = new Form2(textBox1.Text);
                f.Show();
            }
    Tu peux ainsi passer un paramètres de ton choix.
    A+, Hervé.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Merci à vous deux !

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

Discussions similaires

  1. Récupération de la valeur d une variable elle même contenue dans une variable
    Par guiplongeur dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/03/2015, 16h23
  2. Mettre une variable dans l'appel d'une variable de session
    Par PrinceMaster77 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2011, 10h12
  3. Réponses: 9
    Dernier message: 05/11/2008, 09h37
  4. Réponses: 1
    Dernier message: 17/01/2007, 21h52
  5. Réponses: 7
    Dernier message: 13/03/2006, 15h39

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