atahriz
Messages postés8Date d'inscriptiondimanche 16 octobre 2016StatutMembreDernière intervention18 octobre 2016
-
16 oct. 2016 à 19:53
atahriz
Messages postés8Date d'inscriptiondimanche 16 octobre 2016StatutMembreDernière intervention18 octobre 2016
-
17 oct. 2016 à 17:33
bnj, je suis un amateur de vb
je viens de crée un tableau pour calculer et vérifier un chiffre pour chaque mois
et je veux afficher les résultats dans des textbox a partir du tableau déjà remplis
la seul solution que j'ai trouvé c'est de les affichés un par un, mais c'est trop long
est ce quil ya une solution SVP
voici mon code qui marche mais long
---------------------------
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim GH(11, 1) As String
GH(0, 0) = h01moy
GH(1, 0) = h02moy
GH(2, 0) = h03moy
GH(3, 0) = h04moy
GH(4, 0) = h05moy
GH(5, 0) = h06moy
GH(6, 0) = h07moy
GH(7, 0) = h08moy
GH(8, 0) = h09moy
GH(9, 0) = h10moy
GH(10, 0) = h11moy
GH(11, 0) = h12moy
' verification de GH
For i As Integer = 0 To 11
If GH(i, 0) <= 30 Then GH(i, 1) = 1
If GH(i, 0) > 30 And GH(i, 0) <= 50 Then GH(i, 1) = 2
If GH(i, 0) > 50 And GH(i, 0) < 70 Then GH(i, 1) = 3
If GH(i, 0) >= 70 Then GH(i, 1) = 4
Next
GHjan.Text = GH(0, 1)
GHfeb.Text = GH(1, 1)
GHmar.Text = GH(2, 1)
GHapr.Text = GH(3, 1)
GHmay.Text = GH(4, 1)
GHjun.Text = GH(5, 1)
GHjul.Text = GH(6, 1)
GHaug.Text = GH(7, 1)
GHsep.Text = GH(8, 1)
GHoct.Text = GH(9, 1)
GHnov.Text = GH(10, 1)
GHdec.Text = GH(11, 1)
End Sub
--------------------------------------------
Whismeril
Messages postés18425Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 9 juin 2023624 16 oct. 2016 à 23:20
Ok,
Deux options
au lieu d'un tableau à plusieurs dimensions, tu crées une classe adaptée à ton besoin.
Tu mets autant d'instances de cette classe que nécessaire dans une List(of ) et tu bindes le tout dans un contrôle plus adapté (listbox, datagridview...)
Voir ici un exemple de binding
tu conserves ton principe, et tu instances des textbox pendant l'exécution. Pour savoir comment est initialisé un textbox dans le code d'un Form, tu tapes Public Sub New() et entrée.
Ça va t'afficher le constructeur qui par défaut est caché en VB.net.
Sélectionne InitializeComponent, fais un click droit et Atteindre la définition. Ça va t'amener dans le code que Visual Studio écrit pour toi à chaque contrôle que tu poses sur un Form, tout ce qui est nécessaire pour placer un textBox s'y trouve.
Note que .Net offre des outils plus performants que les tableaux. La list(of ) est le plus simple. Elle permet d'ajouter, supprimer, déplacer des éléments sans jamais se soucier de la taille de la collection. Elle permet toutes sortes de requêtes grâce à Linq (les tableaux aussi, mais pas aisément en multidimension).
Le binding te permet quand à lui toute la partie laborieuse d'affectation de données à des contrôles.
atahriz
Messages postés8Date d'inscriptiondimanche 16 octobre 2016StatutMembreDernière intervention18 octobre 2016 17 oct. 2016 à 15:10
merci Whismeril pour votre conseil
c'est plus facile en utilisant la listview
un seule code pour remplir toute une colonne
super
-------------
reste une petite question est ce qu'on peut lire des données a partir de la listview?
------------------
Dim GH(11, 1) As String
GH(0, 0) = h01moy
GH(1, 0) = h02moy
GH(2, 0) = h03moy
GH(3, 0) = h04moy
GH(4, 0) = h05moy
GH(5, 0) = h06moy
GH(6, 0) = h07moy
GH(7, 0) = h08moy
GH(8, 0) = h09moy
GH(9, 0) = h10moy
GH(10, 0) = h11moy
GH(11, 0) = h12moy
' verification de GH
For i As Integer = 0 To 11
If GH(i, 0) <= 30 Then GH(i, 1) = 1
If GH(i, 0) > 30 And GH(i, 0) <= 50 Then GH(i, 1) = 2
If GH(i, 0) > 50 And GH(i, 0) < 70 Then GH(i, 1) = 3
If GH(i, 0) >= 70 Then GH(i, 1) = 4
'remplir la liste
Dim ghx As New ListViewItem(i + 1)
ghx.SubItems.Add(GH(i, 1))
Listview1.Items.Add(ghx)
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 Modifié par vb95 le 17/10/2016 à 15:32
Bonjour
oui on le peut heureusement
Mais il faut se mettre dans la tête que la Listview est un contrôle qui sert à afficher ou à savoir quelle ligne on a cliqué .
Etant donné que tu as rempli ta listview avec un tableau, une list (of XXXX) ou tout autre chose comme structure autant lire ce tableau ou cette list(of XXXXX) ou cette structure
Si tu sélectionnes la ligne 3 par exemple c'est la 4° ligne dans ton tableau ( attention on compte à partir de 0 en VB net )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Whismeril
Messages postés18425Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 9 juin 2023624 17 oct. 2016 à 15:42
Oui, on peut lire des données à partir de n'importe quel contrôle.
Mais il est plus judicieux d'avoir les avoir stockées dans une collection et de ne se servir du contrôle que pour l'affichage et l'interaction avec l'utilisateur.
Je m'explique, si tu dois manipuler des nombres, pour les afficher il faut les convertir en texte, puisqu'un contrôle affiche du texte.
Ensuite tu vas reprendre la donnée pour en faire un calcul, il te faut reconvertir en nombre, et ensuite convertir le résultat en texte, ect....
Si tu utilises le binding, ces étapes de conversions sont transparentes pour toi, car tu travailles sur la collection et c'est le binding qui affiches. Attention, le binding avec un Listview c'est pas le pied, il.est plus aisé de prendre une listbox ou un datagridview.
Allons plus loin, tes nombres sont des distances en cm qui arrivent toutes les 5 secondes. Pendant l'acquisition, tu veux détecter les valeurs aberrantes, tu les affiches donc en cm arrondies à l'entier le plus proche. Mais après, tu veux pouvoir regarder les millimètres dans les détails.
Si tu n'as que ta listview arrondie, c'est mort, si tu as une collection, avec la valeur brute et un binding qui arrondi au moment de l'affichage tu peux rejouer te mesures comme tu veux.
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023165 17 oct. 2016 à 15:51
Salut Whis : on se croise
Whismeril
Messages postés18425Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 9 juin 2023624
>
vb95
Messages postés3418Date d'inscriptionsamedi 11 janvier 2014StatutContributeurDernière intervention31 mai 2023 17 oct. 2016 à 16:07
Salut Vb, et oui
atahriz
Messages postés8Date d'inscriptiondimanche 16 octobre 2016StatutMembreDernière intervention18 octobre 2016 17 oct. 2016 à 17:33