A l'aide!!!!!!!!!!!

Signaler
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
2 août 2007
-
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011
-
Salut , je developpe à peine sous VB.Net.
  Je dois faire passer des informations d'un listBox à un autre . En fait quand je le fais sur le meme formulaire, cela fonctionne correctement . Le probleme c'est quand je veux le faire sur deux formulaires differents , sa ne marche pas .C'est à dire , sur mon Formulaire ayant les données, sur un evenement onclick , je veux que la ligne seclionnée aille s'ajouter dans la listebox du second formulaire .
   Sur un meme formulair, je fais :
   MalistBox1.Items.Add(MalistBox2.SelectedValue)

Mais en mettant MalistBox1 et MalistBox2 dans deux formulaires differents , sa ne marche pas .
 J'ai essayé un truc du genre :
  MonForm1.MalistBox1.Items.Add(......)
 Mais je n'ai aucun resultat......
  Si quelqu'un a des idées, qu'il me fasse signe ...svp.....

15 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
te faut modifier la portée de MaListBox1, pour qu'elle soit visible de l'exterieur, me semble

propriété Modofoer, je crois (je code pas en .Net)
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
2 août 2007

salut .. merci d'avoir repondu .. MAis dit moi c'est quoi ta propriete, car je la trouve nulle part.
 Merci...
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
pas de propriété 'Modifier' (ou qq chose dans le genre)....

étrange, faut attendre la passage d'un codeur .Net :p
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
2 août 2007

salut .. merci d'avoir repondu .. MAis dit moi c'est quoi ta propriete, car je la trouve nulle part.
 Merci...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,
ta 2e form est-elle ouverte en vbmodal?
si oui c'est normal...

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

[auteurdetail.aspx?ID=2359 Renfield]

:


te faut modifier la portée de MaListBox1, pour qu'elle soit visible de l'exterieur, me semble
propriété Modofoer, je crois (je code pas en .Net) <
<===

ca ne marchera absolument pas en vb.net
le .net est un langage multithread, dans son cas le form1 sera sur 1 thread le form2 sur un autre thread et l'evenement du click bouton sera lui aussi sur un autre thread si jamais il tente de modifié un controle du form1 via le click du form2 il controle va verifier en premier quel est le "ThreadID" de son createur donc l'identifiant unique du thread qui a créé ce controle ici ca sera donc le ThreadID du form1
si jamais il differre tu vas avoir une erreur de securité pour avoir tenté une operation cross thread
Pour palier a ce pb de securité :
il faut créé
* une methode dans le form1 qui va se chargé de verifié cela par le code et actionner "le mecanisme" comme il faut.
* Declarer un delegué pointant sur la methode qui sera charger d'executer le code (celle ci dessus)
* le delegué qui sera chargé de "déléguer" le travail a faire au form1
pour justement que ca soit le bon thread qui execute le code

'Variable de classe du Form1
Friend Delegate Sub ItemAddHandler(sTexte As String)
Private dlgItemAdd As ItemAddHandler

Friend sub ItemAdd(sTexte As String)
    If MaListeBox.InvokeRequired Then 'True si le threadId du Thread courrant n'est pas le threadID du createur
       dlgItemAdd = New ItemAddHandler(Addressof ItemAdd) 'Auquel cas on instancié un delegué pointant sur la fonction en cour
       Me.Invoke(dlgItemAdd, new Object(){sTexte}) 'On invoke le delegué depuis l'instance de la classe en cour : Me (donc le threadID sera le bon)
    Else
       MaListeBox.Add(sTexte) 'Si le thread ID est le bon => on peux alors modifier le controle
    End If
End Sub

comment faire l'appel depuis le Form 2 :
<moninstancedeform1>.ItemAdd("toto")

TeBeCo
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
je ne met pas en doute ce que tu avances, je ne connais pas .Net

je trouve juste étrange que des threads se créent sans les demander explicitement...
pour moi, la situation me semble (me semblait ?) être la suivante :

Form2.ListBox1.Add ...

ne fonctionnera pas : Form2 est une classe, pas un objet...

Dim F2 as New Form2
F2.ListBox1.Add ...

devrait fonctionner, non
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
2 août 2007

Salut ....
   En fait ce qui se passe c'est que mon second formulaire ,( celui ou se trouve mes données à transmettre )  c'est une popup (bon peu importe ).
  Comme a dit Renfield, j'avais deja tenté de faire "" Dim F2 as New Form2
F2.ListBox1.Add ...""  MAis , sa ne fonctionnait pas . effectivement c'est la premiere idée qui m'est passée à l'esprit .. un peu comme dans VB.6.
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
2 août 2007

Ma seconde form est un formulaire normal il s'ouvre sous forme de popup.
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
2 août 2007

J'ai essayé ta methode, TeBECo , mais je n'ai toujours rien , meme pas un message d'erreur qui pourra me guider .. dans mes recherches......
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

le .net est par default multithread (MTA) tu peux le contraindre en STA (simple thread) mais effectivement sur les evenement il le fait implicimtement
[auteurdetail.aspx?ID=994112 lordm86] : j'ai du faire une erreur de syntaxe qq part regarde dans la doc le "invokerequired" normalement c'est qqchs d'assez similaire les reponse que je post avant 18h15 en general je les fait depuis mon boulot donc : pas de vs.net, pas de doc, juste ma ptite tete et la textebox du site mais cette methode je l'ai deja utilisée pas mal de fois ca tourne autour de ca

TeBeCo
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
2 août 2007

Merci encore pour ton aide.
  La methode existe bien , mais je crois que le problebe vient du faite que mes formulaires héritent de System.Web.UI.Page et de

SourceCode.K2SmartForms.K2SmartForm

( car j'utilise un workflow K2) pour le formulaire principale.
 De ce faite ; les methodes comme showDialog() qui me permettent d'ouvrire un formulaire ne passe pas . (logic .........) car elle n'existe pas dans dans systemeWindow.Forms.form...... 
  La  je suis bien perdu ................
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

ton pb etait en winform ou en webform ? les solutions dont e t'ai parlées sont pour le winform

TeBeCo
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
2 août 2007

Slt ToBECo j'avais oublié de précisere que mon appl est pour le web , donc des Webform;
  En fiat j'ai compris pourquoi sa ne marchait pas . Et il y a autre chose que je me suis rendu compte , c'est que certaines  methode en winform ne sont pas applicaplicables dans ce cas ( logic car elle n'héritent pas de winForm mais de WebForm).
  Je voulais savoir si t'as pas des tuto qui traitent de mon pB mais dans le cas des Webform. CAr tout ce que je trouve comme Tuto ne parlent que de WinForm.
  Je te remercie. pour lr soutien...........
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

on peux valider en CrossPostBack en .net 2 donc le rechargement de la page se fait sur une autre webform a partir de la par une simple variable de session ou un event quelquonque tu pourra modifié les valeur comme tu l'entend je pense
lit la doc pour plus de detail sur les validation CrossPage

TeBeCo