none
l'ouverture d'une forme quand on clique sur une ligne de datagridview RRS feed

  • Question

  • Bonjour , je suis encore debutante en vb.net et j'ai quelques difficultés 

    je veux en cliquant sur une ligne de mon datagridview une autre forme s'ouvre et en meme temps je veux recuperer le contenu de cette ligne selectionnée pour pouvoir l'utiliser dans la nouvelle froms !! je n'ai pas su comme le faire et meme en cherchant sur google je ne trouve rien :(

    svp aidez moi 

    merci :)

    mercredi 27 août 2014 12:16

Réponses

  • Bonjour 

    merci beaucoup de m'avoir repondu 

    je n'arrive pas a recuperer le contenu de la ligne selectionnée :( , mais quand je clique sur la ligne ma nouvelle forme s'ouvre 

    • Marqué comme réponse Aurel Bera mercredi 3 septembre 2014 12:30
    jeudi 28 août 2014 07:15
  • bonjour,

    voici mon idée:

    j'ai d'abord crée une forms contenant un datagridview1 et une autre pour le contenu de la ligne sélectionnée

    Form1.cs

    public Form1()
            {
                InitializeComponent();
    
    
                //permet de selectionner toutes les cellules d'une ligne sélectionnée
                dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    
                //evite la selection multiple des lignes
                dataGridView1.MultiSelect = false;
    
                //remplissage manuel du datagridview
                dataGridView1.Rows.Add("Papin", "jean-pierre", 18);
                dataGridView1.Rows.Add("Laport", "Sylvie", 45);
                dataGridView1.Rows.Add("Hollande", "michelle", 23);
    
                //abonnement à l'évenement SelectionChanged 
                dataGridView1.SelectionChanged += dataGridView1_SelectionChanged;
            }
    
            void dataGridView1_SelectionChanged(object sender, EventArgs e)
            {
                try
                {
                    //ici je recupere la valeur de la 1ère cellule de la ligne selectionnée
                    string nom = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                    //ici je recupere la valeur de la 2ème cellule de la ligne selectionnée
                    string prenom = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
                    //ici je recupere la valeur de la 3ème cellule de la ligne selectionnée et je convertis en int
                    int age = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[2].Value.ToString());
    
                    //appel à la form2
                    Form2 frm2 = new Form2(nom, prenom, age);
                    frm2.Show();
    
    
                }
                catch (Exception) {}
            }


    Form2.cs

    public Form2()
            {
                InitializeComponent();
            }
    
    
            //un constructeur pour pouvoir recevoir des valeurs depuis d'autres forms
            public Form2(string nom ,string prenom,int age)
            {
                InitializeComponent();
    
                label4.Text = nom;
                label5.Text = prenom;
                label6.Text = age.ToString();
            }

    et voici ce que cela donne sur l'image:

    Bien sûr tu peux convertir le C# en VB.NET en cliquant ici

    j'espère que cela t'aide.


    forum ms89

    • Marqué comme réponse Aurel Bera mercredi 3 septembre 2014 12:30
    jeudi 28 août 2014 10:41

Toutes les réponses

  • Bonjour,

    Voici comment faire:

    Je crée une Window (Form2) qui contient un Label(label1) et j'implémente un constructeur qui prend en entrée une chaine de caractère et qui ajoute ce texte dans le label.

    namespace WindowsFormsApplication2
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
    
            public Form2(string rowInfo)
            {
                InitializeComponent();
                label1.Text = rowInfo;
            }
        }
    }

    Dans les propriétés de la datagrid, il faut s'abonner a l'évenement CellClick

    Dans la méthode, je récupère l'index de la ligne puis le contenu de la ligne. Enfin, je crée ma Form2 en lui passant le contenu de ma ligne.

    Et je fais un Show pour l'afficher:

            private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                string row = dataGridView1.Rows[e.RowIndex].DataBoundItem.ToString();
                Form2 myNewForm = new Form2(row);
                myNewForm.Show();
            }

    Et le tour est joué.

    Cordialement

    Cédric

    mercredi 27 août 2014 13:32
  • Bonjour 

    merci beaucoup de m'avoir repondu 

    je n'arrive pas a recuperer le contenu de la ligne selectionnée :( , mais quand je clique sur la ligne ma nouvelle forme s'ouvre 

    • Marqué comme réponse Aurel Bera mercredi 3 septembre 2014 12:30
    jeudi 28 août 2014 07:15
  • Bonjour,

    pouvez vous me communiquez la structure de votre datagridview et une petite liste pour la populé pour que j'essaie de reproduire le probleme ?

    Dans mon exemple, je générais une petite grille de cette façon:

                dataGridView1.AutoGenerateColumns = true;
                dataGridView1.DataSource = new List<Tuple<string, string>> { new Tuple<string, string>("coucou", "C est moi"), new Tuple<string, string>("hello", "it is me") };

    Et je récupère bien le message dans la fenêtre:

    Cordialement

    Cédric


    jeudi 28 août 2014 07:37
  • mon datagrid contient 4 colonnes et plusieurs lignes 

    les colonnes : num_personne , nom_prenom , num_piece_identite , date_naissance

    et moi je veux recuperer la 1ere colonne ( num_personne ) et la seconde ( nom_prenom) de la ligne selectionnée et les utiliser par la suite dans une nouvelle forme

    merci beaucoup pour votre aide 

    jeudi 28 août 2014 09:14
  • Dans ce cas, voici ma déclaration de grid

    dataGridView1.AutoGenerateColumns = true;
                dataGridView1.DataSource = new List<Tuple<string, string, string, string>> { new Tuple<string, string, string, string>("num_personne1", "nom_prenom1", "num_piece_identite1", "date_naissance1"), new Tuple<string, string, string, string>("num_personne2", "nom_prenom2", "num_piece_identite2", "date_naissance2") };


    Le code de la méthode:

     private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                string row = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString() + " - " + dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString(); 
                Form2 myNewForm = new Form2(row);
                myNewForm.Show();
            }

    Cordialement

    Cédric

    jeudi 28 août 2014 09:30
  • l'erreur c'est impossible de convertir system.windows.forms.datagridrowcollenction en string

     :(

    jeudi 28 août 2014 09:44
  • bonjour,

    voici mon idée:

    j'ai d'abord crée une forms contenant un datagridview1 et une autre pour le contenu de la ligne sélectionnée

    Form1.cs

    public Form1()
            {
                InitializeComponent();
    
    
                //permet de selectionner toutes les cellules d'une ligne sélectionnée
                dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    
                //evite la selection multiple des lignes
                dataGridView1.MultiSelect = false;
    
                //remplissage manuel du datagridview
                dataGridView1.Rows.Add("Papin", "jean-pierre", 18);
                dataGridView1.Rows.Add("Laport", "Sylvie", 45);
                dataGridView1.Rows.Add("Hollande", "michelle", 23);
    
                //abonnement à l'évenement SelectionChanged 
                dataGridView1.SelectionChanged += dataGridView1_SelectionChanged;
            }
    
            void dataGridView1_SelectionChanged(object sender, EventArgs e)
            {
                try
                {
                    //ici je recupere la valeur de la 1ère cellule de la ligne selectionnée
                    string nom = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
                    //ici je recupere la valeur de la 2ème cellule de la ligne selectionnée
                    string prenom = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
                    //ici je recupere la valeur de la 3ème cellule de la ligne selectionnée et je convertis en int
                    int age = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[2].Value.ToString());
    
                    //appel à la form2
                    Form2 frm2 = new Form2(nom, prenom, age);
                    frm2.Show();
    
    
                }
                catch (Exception) {}
            }


    Form2.cs

    public Form2()
            {
                InitializeComponent();
            }
    
    
            //un constructeur pour pouvoir recevoir des valeurs depuis d'autres forms
            public Form2(string nom ,string prenom,int age)
            {
                InitializeComponent();
    
                label4.Text = nom;
                label5.Text = prenom;
                label6.Text = age.ToString();
            }

    et voici ce que cela donne sur l'image:

    Bien sûr tu peux convertir le C# en VB.NET en cliquant ici

    j'espère que cela t'aide.


    forum ms89

    • Marqué comme réponse Aurel Bera mercredi 3 septembre 2014 12:30
    jeudi 28 août 2014 10:41
  • Merci beaucoup pour votre aide :D c'est bon ca marche :D 

    encore merci 

    jeudi 28 août 2014 12:08