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 :

Dataset entre différents formulaires


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 142
    Points : 108
    Points
    108
    Par défaut Dataset entre différents formulaires
    Bonjour,
    Je souhaiterais accéder à mon Dataset dans une DialogForm.
    Dans cette seconde Form j'ai besoin de remplir des ComboBox avec les éléments du Dataset utilisé dans la Form 1.

    J'ai passé mon Dataset en "public static" mais ça ne fonctionne pas.

    Cependant dans les propriétés des contrôles Combo de la DialogForm je peux définir les Datasources sur les Tables souhaitées.
    Et ensuite remplir chaque combo ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                MonCombo_DialogForm.DisplayMember = "MaColonnedeTable";
    Le Dataset est donc défini dans cette portée.
    Comment y accéder par le code ?

    Merci

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    Le passage d'une référence au DataSet du Form principal à un Form "modeless"(dit aussi non modal) exige un method dans le Form "modeless".
    Pour avoir en plus le synchronisme de navigation,il faut passer aussi une référence au BindingContext du Form principal.

    code behind.cs exemple du Form principal :
    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
     
    namespace WinReferenceDataSet
    {
        public partial class Form2 : Form
        {
            private DataSet ds = null;
            public Form2()
            {
                InitializeComponent();
            }
     
            private void Form2_Load(object sender, EventArgs e)
            {
                ds = getds();
                this.dataGridView1.DataSource = ds;
                this.dataGridView1.DataMember = ds.Tables[0].TableName;
     
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                FormModeless f1 = new FormModeless();
                f1.Owner = this;
     
                f1.SetData(BindingContext, ds);
                f1.Show();
            }
            private DataSet getds()
            {
                DataSet ds = new DataSet();
                DataTable table1 = new DataTable("table1");
                ds.Tables.Add(table1);
                table1.Columns.Add(new DataColumn("PersonID", typeof(int)));
                table1.Columns.Add(new DataColumn("PersonNAME", typeof(string)));
                DataRow dr = table1.NewRow();
                for (int i = 1; i < 11; i++)
                {
                    dr[0] = i * 100;
                    dr[1] = "Nom" + i.ToString();
                    table1.Rows.Add(dr);
                    dr = table1.NewRow();
                }
                return ds;
            }
        }
    }
    & celui du Form "modeless" :
    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
     
    namespace WinReferenceDataSet
    {
        public partial class FormModeless : Form
        {
            private DataSet m_data =new DataSet(); 
            private BindingContext m_bmb =null ; 
     
            public FormModeless()
            {
                InitializeComponent();
            }
              private void FormDialog2_Load(object sender, EventArgs e)
            {
                this.BindingContext = m_bmb;
     
                this.listBox1.DataSource = m_data;
                this.listBox1.DisplayMember = "Table1.PersonName";
                this.listBox1.ValueMember = "Table1.PersonID";
            }
            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (listBox1.SelectedIndex < 0) return;
            }
            public void  SetData(BindingContext bmb,DataSet  data)
            {
                m_bmb=bmb;
                m_data=data;
            }
     
     
     
     
     
        }
    }
    bon code...

Discussions similaires

  1. Récupération de valeurs entre diffèrents formulaire.
    Par Solown dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/10/2017, 13h20
  2. [Débutant] Ajout d'onglet entres différents formulaire
    Par Schamm dans le forum C#
    Réponses: 2
    Dernier message: 15/11/2013, 19h43
  3. [AC-2007] Lien entre différents éléments dans un formulaire
    Par firlama28 dans le forum IHM
    Réponses: 2
    Dernier message: 03/08/2012, 11h34
  4. Réponses: 0
    Dernier message: 08/06/2011, 19h55
  5. Transfert de données entre différents formulaires
    Par sbocquet dans le forum InfoPath
    Réponses: 1
    Dernier message: 16/04/2008, 15h04

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