CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[WinForm] Bloque sur 2 choses (Code présent)

sali6000
sali6000
Niveau 6
10 septembre 2017 à 03:54:19

Bonsoir !

Je bloque sur 2 bêtises.

J'ai form1 et à partir de celui çi je peut allé à form2 ou form3

Dans form2 je veut insérer des textBox.Text(); dans un tableau à 2 dimension afin de pouvoir manipuler ce tableau dans le formulaire form3

J'ai fait comme ceçi bêtement :

        public Form3(string[,] stock)
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ListViewItem liste = new ListViewItem(textBox_Label.Text);
            liste.SubItems.Add(textBox_quantite.Text);
            liste.SubItems.Add(textBox_PrixUnitaire.Text);
            listView1.Items.Add(liste);
        }

J'ai sûrement fait de la m*** mais j'ai créer mon tableau à 2 dimension dans form1 en pensant pouvoir le récupérer dans les autres formulaires si je le passe en paramètre comme j'ai fait çi dessus "Form3(String[,] stock)" mais je ne voit pas comment le récupérer à l'intérieur de button1_Click pour y insérer les données que j'ai dans les textbox... (pour manipuler ce tableau plus tard dans un autre formulaire)

Et ensuite j'ai du mal à comprendre le ListViewItem afin de pouvoir intégrer les informations de mon tableau 2D (dans le but de les afficher)

J'espère que vous m'avez compris, merci !

arsh222
arsh222
Niveau 10
10 septembre 2017 à 11:41:24

Tu mets une variable propre au Form3 et le constructeur met le tableau dedans pour que les autres fonctions du Form3 puissent l'utiliser


        private string[,] stock;

        public Form3(string[,] stock)
        {
            InitializeComponent();
            this.stock = stock;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            // utilise this.stock
            // ...

Je ne garantis pas la syntaxe exacte

Pour la listview, vois peut-être ici http://plasserre.developpez.com/cours/vb-net/?page=ui-winforms3#LVIII-H-4-a

Message édité le 10 septembre 2017 à 11:44:42 par arsh222
sali6000
sali6000
Niveau 6
10 septembre 2017 à 12:18:47

Un grand merci pour votre attention

S'est ce que j'avait fait à la base jumbo (si j'ai bien compris) j'avais créer mon tableau dans le form1 et je passait mon tableau en paramètre lorsque je fesait appel à form2 (ou form3), mais je n'arrive pas à atteindre mon tableau à l'intérieur de => button1_Click qui se trouve dans form2 (je pensais que ca allait être simple à faire). Corrige moi si je me trompe ou si je t'ai mal compris

Je pense que ca devrais marcher comme tu dis arsh222, je vais essayé ça. Mais du coup j'aurait 2 tableaux de créer et je rencontrerait alors sûrement des difficultés si je souhaite modifié les valeurs de mon tableau dans form3 non ? Car si je fait tableau2 = tableau1, comment puis-je refaire tableau1=tableau2 par la suite ? Sinon merci pour ton conseil car j'y avais pas pensé et je vais sûrement l'utiliser par la suite pour afficher mon tableau dans un formulaire

        string[,] stock = new string[100, 3];
        public Form1()
        {
            InitializeComponent();
            
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            Form3 open = new Form3(stock);
            open.Show();
        }

et dans mon form3 j'ai ça :

        public Form3(string[,] stock)
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ListViewItem liste = new ListViewItem(textBox_Label.Text);
            liste.SubItems.Add(textBox_quantite.Text);
            liste.SubItems.Add(textBox_PrixUnitaire.Text);
            listView1.Items.Add(liste);
        }

Il n'y a pas un moyen ultra simple de pouvoir atteindre et ainsi modifier mon tableau dans n'importe quel formulaire ?

Message édité le 10 septembre 2017 à 12:23:30 par sali6000
arsh222
arsh222
Niveau 10
10 septembre 2017 à 16:41:24

Le 10 septembre 2017 à 12:18:47 sali6000 a écrit :
Je pense que ca devrais marcher comme tu dis arsh222, je vais essayé ça. Mais du coup j'aurait 2 tableaux de créer et je rencontrerait alors sûrement des difficultés si je souhaite modifié les valeurs de mon tableau dans form3 non ? Car si je fait tableau2 = tableau1, comment puis-je refaire tableau1=tableau2 par la suite ?

Les tableaux sont des types référence, quand tu passes le tableau d'un formulaire à l'autre c'est toujours le même tableau que tu manipules.
Attention, c'est valable si tu ne fais qu'accéder aux éléments du tableau (par exemple stock[4] = "blabla"), pas si tu crées un nouveau tableau qui remplace l'ancien.

Sinon le tableau pourrait être un membre static (et public) comme dit Mumbo_Jumbo. Mais je ne sais pas si c'est très propre en terme de bonnes pratiques.

sali6000
sali6000
Niveau 6
10 septembre 2017 à 20:58:31
Attention, c'est valable si tu ne fais qu'accéder aux éléments du tableau (par exemple stock[4] = "blabla"), pas si tu crées un nouveau tableau qui remplace l'ancien.

s'est préçisément ce que je veut faire mais ca ne marche pas :/. Avec la technique de arsh222 => this.stock = stock; ca marchera mais je pourrais que "lire" le tableau et je ne pourrais pas "modifier" le tableau principal pour ensuite le "lire" dans un autre formulaire sauf si peut être je le met en static comme vous dites, mais c'est vrai que ca serais contourner le problème

arsh222
arsh222
Niveau 10
10 septembre 2017 à 23:23:34

Tu peux le passer "vraiment" par référence...?
public Form3(ref string[,] stock)
{
// ...
}

sali6000
sali6000
Niveau 6
11 septembre 2017 à 00:26:24

Je ne comprend pas l'histoire de référence mais faire form3(string[,] stock) ça oui j'arrive bien à le faire et donc j'arrive à le passer au formulaire sans problème mais je n'arrive pas du tout à atteindre le "stock" quand je veut l'utiliser dans la fonction button1_Click qui se trouve dans "form3"

J'aimerais en faite que quand je clique sur le bouton "enregistrer" (button1_Click), toutes les valeurs que j'ai mises dans le textbox soient enregistrée dans le tableau stock pour pouvoir l'utiliser par la suite dans d'autres formulaires (désoler si je me répète)

Message édité le 11 septembre 2017 à 00:27:10 par sali6000
sali6000
sali6000
Niveau 6
11 septembre 2017 à 05:52:14

https://image.noelshack.com/fichiers/2017/37/1/1505101869-sss.jpg

Voilà l'image qui expliquera mieux ce que je cherche à faire, désoler pour le double post les kepains !

arsh222
arsh222
Niveau 10
11 septembre 2017 à 17:39:32

Hum mais si tu fais ce que moi et Mumbo_Jumbo avons dit ça devrait marcher [[sticker:p/1jnh]]

private string[,] stock;
public Form3(string[,] stock)
{
   this.stock = stock     // <-- met le tableau dans une variable this.stock accessible depuis n'importe où dans la classe Form3
   InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
  {
    // le tableau est accessible en tant que this.stock
  }
sali6000
sali6000
Niveau 6
12 septembre 2017 à 01:10:53

Je comprend bien et en effet ca marche, mais ce que j'aurais voulus faire s'est pouvoir récupérer (lire) ce tableau après l'avoir modifier dans un autre formulaire que celui dans lequel il a été modifier (dsl du retard, j'ai repris l'école)

Je sais que je peut modifier mon tableau dans form3 mais je pourrais pas le lire (après l'avoir modifier) dans form2

donc dans l'ordre (pour l'exemple) :

form1 => créer tableau
form2 => modifier le tableau
form3=> lire le tableau modifier

ou alors s'est que je n'ai vraiment rien compris lol

Message édité le 12 septembre 2017 à 01:11:41 par sali6000
dechet_s0cial
dechet_s0cial
Niveau 10
12 septembre 2017 à 22:18:43

si un truc te parait difficile , c'est que ton design est vaseu (en gros tu c'est mal pensé)

sali6000
sali6000
Niveau 6
13 septembre 2017 à 00:21:07

Je pense avoir eu le déclique avec ton dernier post Jumbo, un grand merci pour ton aide et ta perseverance ainsi que celle de arsh ! lol

Apparement oui il y a une façon de faire les choses propre à windowsForm, j'ai du mal à bien visualiser la façon de faire selon ce que je veut faire car windows form je l'apprend en autodidacte, ca viendra avec le temps j'espère bien !

Merci des conseils !

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment