Votre question

probleme rafraichissement listbox C#

Tags :
  • listbox
  • Programmation
Dernière réponse : dans Programmation
29 Février 2012 21:21:31

bonjour,

Dans une fenetre j'ai une liste de ville et un bouton ajouter
alors lorsque je clique sur ce bouton il m' affiche une petite fenetre contenant un textbox et 2 boutons valider et annuler, alors lorsque il valide je veux que ce qu'est ecrit dans le textbox s'ajoute dans la liste de la fenetre parent mais ca ne s'ajoute pas et lorsuque je compte le nbre d'items de la liste alors ca augmente ca veut dire qu'il est ajouté mais qu'l s'affiche pas
voila le code du boutton valider

Code C# :
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. this.textBox1.Text = "sdwdc:" + this.frmParent.getList().Items.Count;
  4. if (this.textBox1.Text != "")
  5. {
  6. //this.frmParent.Activate();
  7. //this.frmParent.Focus();
  8. //this.getForm().getList().Refresh();
  9. //this.frmParent.Select();
  10. //this.frmParent.getList().Items.Add("wdvxdgbfxgbxgbnc");
  11. this.getForm().getList().Items.Add("" + textBox1.Text);
  12.  
  13. this.getForm().getList().Refresh();
  14. this.Close();
  15. return;
  16. }
  17. else {
  18. this.Close();
  19. return;
  20. }
  21.  
  22.  
  23. }


ts ce qui est en commentaire je l'ai fais mais pas de resultat
est ce que vous avez une idée


merci d'avance

Autres pages sur : probleme rafraichissement listbox

a c 232 L Programmation
29 Février 2012 21:57:16

Salut,

Si tu veux les ajouter automatiquement, utilise la propriété DataSource de ta listBox et mets y tes items, lorsque tu ajouteras des items à ta liste, ils devraient automatiquement être ajoutés.
1 Mars 2012 00:25:16

j'ai fais et ca pas marché
en resumé mon probleme c'est que je veux modifier une lste qui appartient a une form d'une autre form





merci
Contenus similaires
a c 232 L Programmation
1 Mars 2012 10:26:12

T'as fait ça où ? Avec ton code, tu utilises la propriété Item de ta list box et pas la DataSource...


Et, généralement on ne fait pas ça comme ça.
Ta 2ème Form te permet de retourner un élément, tu mets l'élément en visibilité publique.
Et dans ta form principale, tu récupères l'élément pour l'insérer.

1 Mars 2012 14:11:27

Citation :
Ta 2ème Form te permet de retourner un élément, tu mets l'élément en visibilité publique.
.

ca c'est ok
Citation :
Et dans ta form principale, tu récupères l'élément pour l'insérer.

comment je vais le recuperer

dans le boutton ajouter de la form parent je vais instancier la forme 2
et lorqu'il va cliquer sur valider dans la forme 2 comment la forme parent va etre au courant qu'on a cliqué dur ok pour ajouter un item a sa listbox
merci
a c 232 L Programmation
1 Mars 2012 14:43:42

Dans ta form parent, tu vas instancier ta form 2, et appeler la méthode ShowDialog pour l'afficher.
Pour savoir si le bouton OK a été sélectionné, il faut que tu mettes la propriété DialogResult de ton bouton OK à "OK". Et tu peux savoir dans ta form parent si le bouton OK a été cliqué.

Quelque chose du genre :
  1. using (Form2 form2 = new Form2()) { // On instancie la Form
  2. if (form2.ShowDialog() == DialogResult.OK) { // On affiche la Form et on s'assure que le bouton OK a été appuyé
  3. this.listeElements.Add(form2.NouvelElement); // Le bouton OK a été appuyé, on peut ajouter le nouvel élément à la liste
  4. }
  5. }



Et si ta listeBox a sa DataSource égale à ta liste d'éléments, ça devrait être bon.
  1. this.listBox1.DataSource = this.listeElements;
1 Mars 2012 18:59:47

alors j'ai fais ce que tu m'a dis merci
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. Form2 frm2 = new Form2();
  4. frm2.ShowDialog();
  5. if (frm2.ShowDialog() == DialogResult.OK)
  6. { // On affiche la Form et on s'assure que le bouton OK a été appuyé
  7. frm2.Close(); // et meme sans cette ligne c'est la meme chose
  8. this.listBox1.Items.Add(frm2.new_ville); // Le bouton OK a été appuyé, on peut ajouter le nouvel élément à la liste
  9. }
  10. }


maintenant lorsque je clique sur valider de la deuxieme form alors elle se ferme puis elle s'ouvre elle meme dans un nouvel endroit avec la meme expression ecrite dans le textbox et qand je reclique sur valider elle s'ajoute dans la listbox du premier form


je sais pas pourquoi elle s'afficher une autre fois lorsque je clique sur valider

j'espere avoir bien expliquer le"nouveau " probleme



merci d'avance
1 Mars 2012 19:14:04

cayé j'ai trouvé : en fait tu me la trouvé :
voila le code qui marche
  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. using (Form2 frm2 = new Form2())
  4. { // On instancie la Form
  5. if (frm2.ShowDialog() == DialogResult.OK)
  6. { // On affiche la Form et on s'assure que le bouton OK a été appuyé
  7. //frm2.new_ville = "scdf";
  8. frm2.Close();
  9. this.listBox1.Items.Add(frm2.new_ville); // Le bouton OK a été appuyé, on peut ajouter le nouvel élément à la liste
  10. }
  11. }
  12. }


merci Omar

a c 232 L Programmation
1 Mars 2012 20:19:11

Tu n'as pas besoin d'appeler frm2.Close(), vu que ta fenêtre sera déjà fermée quand tu auras cliqué sur le bouton OK.
Et tu peux supprimer les commentaires, c'était juste pour infos... ;) 
2 Mars 2012 00:44:19

et pour que l' application soit plus pro je veux que la form2 se ferme et la ville s'ajoute au la listbox de la form parent meme si le user tape entréé sans cliquer sur valider, pour se faire j'ai programmé sur un evenement key quand le textbox a le focus :
  1. private void textBox1_KeyDown(object sender, KeyEventArgs e)
  2. {
  3. if (e.KeyCode == Keys.Enter)
  4. {
  5. //this.button1.
  6. this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;
  7. this.Close();
  8. }
  9. }

mais avec ce code qd je clique sur entrée la form2 se ferme mais la ville ne s'ajoute pas

est ce que tu as une idée



merci d'avance

2 Mars 2012 00:52:18

cayé j'ai trouvé
voila :
  1. private void textBox1_KeyDown(object sender, KeyEventArgs e)
  2. {
  3. if (e.KeyCode == Keys.Enter)
  4. {
  5. button1.PerformClick(); // comme si j'ai cliqué sur valider
  6. }
  7. }
2 Mars 2012 01:54:32

maintenant
je veux refaire ces deux formes de manipulations des villes aux fonctions et activités et contacts
alors pour ce faire j'ai copier coller et remplacer ville par activité et ...........

mais il y a tjrs plusieurs erreurs

alors si vous avez une idée pour copier ces 2 formes pour faire les autres le plus vite possible
c'est optionnel (juste pour gagner du temps et eviter les travaux repetitifs )


merci


a c 232 L Programmation
2 Mars 2012 09:12:55

Salut,

Pour le bouton Entrée, il y a plus simple ! Il y a quelque chose de tout fait déjà.
Il faut mettre la propriété AcceptButton de ta Form2 au nom de ton bouton (button1)
Et de la même façon, tu peux utiliser la propriété CancelButton de ta Form2 pour avoir un bouton qui ferme la form quand tu appuies sur Echap (n'oublie pas de mettre ce bouton en DialogResult = Cancel aussi, si tu en as un.

Aussi, je te conseillerai de donner des vrais noms à tes boutons, et de ne pas garder "button1", "button2", mais plutôt "okButton", "cancelButton", etc...


Pour avoir la même chose plusieurs fois, généralement, tu dois pouvoir utiliser les mêmes Form, que tu personnalises.
Parce que les seules différences, ça va être quelques textes (ville à la place d'activité), et peut être pas la même liste de départ.
Donc il te suffit de paramétrer tes Form, de manière qu'elles ne dépendent pas de quelque chose de trop spécifique.
3 Mars 2012 11:26:11

oui tu as raison c'est mieux et plus simple


merci Omar
a bientot
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS