Bonjour,
est ce que c'est possible de remplir une zone de texte ou une listview à travers une autre page?
Merci
Bonjour,
est ce que c'est possible de remplir une zone de texte ou une listview à travers une autre page?
Merci
j'ai une page contenant une listview et des controles...
au dessus de cette liste, j'ai mis un lien qui m'envoie vers une page pour saisir des données relatives à la liste.
j'aimerais quand je retourne à la 1ère page trouver ma liste mise à jour.
Remarque:j'ai fait cela mais juste en passant le curseur au dessus de la liste.
Il est possible de passer un paramètre dans le constructeur New() de ton winForm.
Autrement dit:
Tu peux appeler le form2 via le form1 en lui passant un paramètre qui te permettra d'agir sur l'ensemble des contrôles du formulaire.
Oui s'ils ne sont pas déclarés private.
Depuis ta Form2, tu peux faire Form1.TextBox1.Text = "Toto"
Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray
ToDo : Faire une ToDo List
comme ça;
avec liste_facture est ma listview.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim F_Gestion_FP As New Gestion_FP(Liste_facture) F_Gestion_FP.ShowDialog()
mais on me l'a souligne !
C'est bon, j'ai mis la propriété modifiers à publique. et j'ai appeler au niveau de la 2ème page comme ça:
Je vous remercie infiniment _Ez3kiel
Code : Sélectionner tout - Visualiser dans une fenêtre à part page1.liste_factures_P.Items.Add(lvi)
et un grand merci The_Big_Lebowski pour l'idée.
C'est pas le genre de méthode que j'utilise mais ca marche.
pourriez vous The_Big_Lebowski me décrire le code qui permet de passer des parametres à une autre page?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private unForm as form Public Sub New(ByVal form1 As Form) InitializeComponent() unForm = form1 End Sub
ou' est le paramètre?
Mon message était censé être la 1ére réponse du topic, mais j'ai fais autre chose entre temps avant de l'envoyer donc il peut paraître hors-contexte.
Par Static tu entends la version C#ienne du module ?
Sinon le Designer VS déclare les composants friends withevents par défaut, ainsi ces controls sont accessibles entre formulaires dans la mesure où l'on reste dans le même projet.
Mais la solution du Big Lebowski et la tienne sont également valable, on pourrait lui passer une instance par le constructeur. Mais la form étant déjà instancié autant s'en servir directement ?
@spring.time: Ne tombe pas dans la facilité de mettre tout en public, VB.net est assez riche en propriété d'instances (private/public/friend/ withevents) et de classes (shadows, public, private, overridables, etc etc) pour avoir une code construit propre et maintenable par d'autres.
Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray
ToDo : Faire une ToDo List
Désolé, je suis en train de bossé en C# et c'est la première chose qui me sois passé par l'esprit
Je n'ai pas compris le sens de cette phrase. Tu es obligé d'envoyé l'instance en paramètre pour y avoir acces, non? Sinon comment fait tu pour la récuperer et utilisé les méthode associé ou avoir acces au élément public ?Mais la form étant déjà instancié autant s'en servir directement ?
Pas forcément, au sein d'un même projet si tu as 2 Forms, depuis form2 tu peux faire form1.TaTextBox ou n'importe quel autre composant posé sur ta Form1. Et pour ce qui est des méthodes ou properties tu y as accès aussi dans la mesure où elle sont soit public soit shared.
Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray
ToDo : Faire une ToDo List
Je vien de voir ça et de retester, en effet autant pour moi. Comme c'est impossible en C#, se me parraissait logique qu'il en soit de mm en Vb. Je trouve ça limite sale comme possibilitéePas forcément, au sein d'un même projet si tu as 2 Forms, depuis form2 tu peux faire form1.TaTextBox ou n'importe quel autre composant posé sur ta Form1
Les voies de Windows sont impénétrables.
Après oui ça peut paraître sale mais c'est un autre débat, là on s'approprie un peu le sujet ...
Envoyé par spring.timeLe paramètre est form1 qui se trouve dans les parenthèses, et ensuite il est stocké dans la variable privé unForm.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private unForm as form1 Public Sub New(ByVal form1 As Form1) InitializeComponent() unForm = form1 End Sub
Lorsque dans ta Form1 tu initialiseras ta Form2, tu passeras Form1 en paramètre du constructeur de Form2 (New)
Par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub afficherForm2() Dim FormulaireAAfficher As Form2 = New Form2(Me) 'Vu que nous sommes dans Form1 ici, Me = Form1 FormulaireAAfficher.Show() End Sub
EDIT: J'ai mis en gras qlqes modifications sur le code de The_Big_Lebowski pour que tu ais une instance de Form1, sinon tu auras que les propriétés de Form de base
EDIT2: Mais avec cette méthode, tu devras prendre en compte que tu auras une instance de Form1 d'origine qui sera affiché en fond, et une autre instance de Form1 que tu auras modifié (rajout de texte etc), tu risque de devoir réactualiser ta 1ère instance avec Form1 = unForm
Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray
ToDo : Faire une ToDo List
Autre possibilité pour le passage d'informations entre fenêtres.
Cela ne rentre pas dans ton souhait de visibilité direct, mais permet d'être plus indépendant au niveau programmation.
Tu crés une classe représentant tes données.
Tu passes une instance de cette classe (en ByRef) en paramètre du constructeur de ta fenêtre de saisie. (qui l'affecte à une propriété)
Sur ta fenêtre de saisie, tu as un bouton valider avec sa propriété "DialogResult" a "OK".
Sur valider tu affectes les valeurs saisies à la propriété donc à l'instance de la classe de tes données.
Dans ta fenêtre avec la liste tu fais un "ShowDialog" avec un test si validé.
Si oui "OK" tu mets à jour ta liste
Cela peut sembler plus compliqué, mais en fait ta fenêtre de saisie est totalement indépendante et peut être réutilisée dans une autre partie de ton projet.
Tu peux l'utiliser pour la création ou la modification (vu que c'est pour un ListView), il suffit d'un flag en boolean dans ta classe de données, et aprés le if du DialogResult tu testes ce flag pour ajouter ou modifier.
Un exemple avec de l'existant. (avec en commentaire quelques indications pour ton code)
Dans la fenêtre appelante
Dans la fenêtre de saisie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub btnHeures_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim DonneesJourTemp = creDonneesJourTemp(DonneDonneesDuJour(sender.tag)) ' ici tu cré l'instance de ta classe données =>dim data as ClassData = new ClassData ' si tu est en modif d'une ligne, tu affectes les valeurs dans data (et flag new = false) Dim fenCalHeures As frmSaisie = New frmSaisie(DonneesJourTemp.iuDonneesJour) 'ici tu cré la fenêtre avec son paramètre classe de données => ... = New frmSaisieLV(data) If fenCalHeures.ShowDialog() = Windows.Forms.DialogResult.OK Then 'remplacer les 2 lignes suivantes par la mise à jour de ta liste. If data.new Then INS(data) Else MAJ(data) <- tes méthodes d'ajout ou de mise à jour MAJDonneesJour(DonneesJourTemp) ' Enregistre les données dans la classe correspondant à la sélection AfficheInfoCase(DonneesJourTemp, NumCaseDeSaisie) ' affiche les données dans les contrôles de la case End If fenCalHeures.Close() fenCalHeures.Dispose()
La propriété contenant les infos provenant de la fenêtre appelante
Le constructeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Private mDonneesJournaliere As DTODataJour ''' <summary>Ensemble de données pour la journée.</summary> Public Property DonneesJournaliere() As DTODataJour Get Return mDonneesJournaliere End Get Set(ByVal value As DTODataJour) mDonneesJournaliere = value End Set End Property
La validation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ''' <summary>Constructeur principal.</summary> ''' <param name="LesDonneesJournaliere">L'ensemble des données journalière concernées.</param> Public Sub New(ByRef LesDonneesJournaliere As DTODataJour) InitializeComponent() DonneesJournaliere = LesDonneesJournaliere RempliControles() AfficheCumulTemps() End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub btnValider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnValider.Click MAJDonneesJournaliere() ' met à jour la propriété. Close() End Sub
Traductions d'articles :
La mémoire en .NET - Qu'est-ce qui va où ?
Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.
je vais l'essayer plu-tard
merci beaucoup
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager