Partage
  • Partager sur Facebook
  • Partager sur Twitter

Interagir avec la listview ou textbox d'une autre

    2 janvier 2019 à 18:11:42

    Bonjour ! 

    J'ai créé une base de données et j'ai créé un logiciel avec c# afin de m'y connecté et d'interagir avec.
    J'ai créé une listview avec les éléments de ma base de données à l'intérieur, j'ai créé un bouton permettant d'ouvrir une nouvelle form afin de modifier un élément sélectionnée dans la listview.
    par exemple la requête sql va prendre en compte l'élément selectionné mais aussi les élément d'une textebox mais celle-ci se trouve sur la deuxième form 
    Le problème c'est que je ne sais pas comment faire pour que ma deuxième form prenne en compte la listview qui elle est dans la première form.

    Quelqu'un pourrait m'aider s'il vous plaît ? 

    Merci.

    -
    Edité par SeeZix 2 janvier 2019 à 18:27:12

    • Partager sur Facebook
    • Partager sur Twitter
      3 janvier 2019 à 14:58:58

      Avez-vous pensé au DataBinding ?

      Les données affichées dans les 2 formulaires sont les mêmes, mais non pas stockées dans les forms mais dans un objet dédié, le Model.

      Quand vous voulez sauvegarder, vous sauvegardez le "model", pas les valeurs affichées dans les Forms.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        3 janvier 2019 à 17:27:44

        Je pense avoir trouver, j'ai ajouté ça dans ma deuxième form

        private Form1 _form1; public Form2(Form1 form1) 
        { InitializeComponent(); _form1 = form1; } 
        private void Ajouter_Vente_Click(object sender, EventArgs e) 
        { ListViewItem element = _form1.ListView.SelectedItems[10]; //Ensuite j'ai mis les différents éléments jusqu'à 10 }

        Le problème c'est que j'ai une erreur et je ne connais pas du tout, une idée ?

        Message : InvalidArgument=La valeur '10' n'est pas valide pour 'index'. Nom du paramètre : index'

        -
        Edité par SeeZix 3 janvier 2019 à 17:33:20

        • Partager sur Facebook
        • Partager sur Twitter
          3 janvier 2019 à 17:40:13

          Vous êtes en train de faire du code spaghetti, très fragile et très difficile à maintenir.

          Faire une modification dans Form1 aura des impacts dans Form2 et vis vers ça.

          Si vous faites un programme "jouet", ça passe, mais quand le projet gagnera en fonctionnalité, ça partira en cacahouète.

          Il sort d'où ce "10". Qu'est-ce qui vous fait dire que SelectedItems aura toujours au moins 11 éléments ???

          Pensez sérieusement au DataBinding.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
            3 janvier 2019 à 17:50:43

            Je ne suis qu'un simple étudiant en BTS, ce n'est qu'un exercice que je dois rendre, pas quelque chose de professionnel, je suis en train d'apprendre donc je ne connais pas énormément.

            Je réexplique ce que je dois faire, je sélectionne un véhicule dans la listview et ensuite je clique sur le bouton ajouter une vente, tout ça dans la form 1 ensuite ça ouvre la form 2 et j'entre les données du client ayant acheté le véhicule. En fait l'ajout de la vente combine les données de la listview ainsi que les données que je vais entrer dans la deuxième form. j'espère m'être bien exprimé

            Voici le code de ma form 2 directement : 

            public partial class Ajouter_Vente : Form
                {
            
                    private concession _concession;  public Ajouter_Vente(concession concession)
                    {
                        InitializeComponent();
                        _concession = concession;
                    }
            
                    MySqlConnection connexion;
            
                    private void bt_ajouter_Click(object sender, EventArgs e)
                    {
                        using (concession concession =new concession())
                        connexion = new MySqlConnection("DATABASE=Concession; SERVER=localhost; user id=root; pwd=root");
                        connexion.Open();
                        MySqlCommand commande = new MySqlCommand("INSERT INTO Client_Stock_Vente (Id_Client, Id_Stock, Date_Vente) VALUES ((SELECT Id_Client FROM Client WHERE Nom = @Nom AND Prenom = @Prenom AND Adresse = @Adresse AND         numero = @Numero), (SELECT Id_Stock FROM Stock WHERE Kilometrage = @Kilometrage AND Prix_Achat = @Prix_Achat AND Prix_Vente = @Prix_Vente AND Date_CT = @Date_CT AND Option_Vehicule = @Option AND Puissance_Fiscale = @Puissance_Fiscale), @Date_Vente)", connexion);
                        
                        ListViewItem element = _concession.lv_vehicule.SelectedItems[10];
                        string Marque = element.SubItems[0].Text;
                        string Modele = element.SubItems[1].Text;
                        string Annee = element.SubItems[2].Text;
                        string Porte = element.SubItems[3].Text;
                        string Transmission = element.SubItems[4].Text;
                        string Couleur = element.SubItems[5].Text;
                        string Energie = element.SubItems[6].Text;
                        string Kilometrage = element.SubItems[7].Text;
                        string Date_CT = element.SubItems[8].Text;
                        string Option_Vehicule = element.SubItems[9].Text;
                        string Puissance_Fiscale = element.SubItems[10].Text;
                        commande.Parameters.AddWithValue("@Marque", Marque);
                        commande.Parameters.AddWithValue("@Modele", Modele);
                        commande.Parameters.AddWithValue("@Annee", Annee);
                        commande.Parameters.AddWithValue("@Porte", Porte);
                        commande.Parameters.AddWithValue("@Transmission", Transmission);
                        commande.Parameters.AddWithValue("@Couleur", Couleur);
                        commande.Parameters.AddWithValue("@Energie", Energie);
                        commande.Parameters.AddWithValue("@Kilometrage", Kilometrage);
                        commande.Parameters.AddWithValue("@Date_CT", Date_CT);
                        commande.Parameters.AddWithValue("@Option_Vehicule", Option_Vehicule);
                        commande.Parameters.AddWithValue("@Puissance_Fiscale", Puissance_Fiscale);
            
                        commande.Parameters.AddWithValue("@Nom", tb_nom.Text);
                        commande.Parameters.AddWithValue("@Prenom", tb_prenom.Text);
                        commande.Parameters.AddWithValue("@Adresse", tb_adresse.Text);
                        commande.Parameters.AddWithValue("@Numero", tb_numero.Text);
                        commande.Parameters.AddWithValue("@Date_Vente", Convert.ToDateTime(tb_date_vente.Text).ToString("yyyy-MM-dd"));
                        commande.ExecuteNonQuery();
                        commande.Parameters.Clear();
            
                    }
                }
            • Partager sur Facebook
            • Partager sur Twitter
              8 janvier 2019 à 10:52:06

              Il sort d'où ce "10" (BIS)

              Ne confondez-vos pas SelectedItems et Items ?

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

              Interagir avec la listview ou textbox d'une autre

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown