Adressage indexé d'un control
Résolu/Fermé
robunccm
Messages postés
52
Date d'inscription
jeudi 7 février 2019
Statut
Membre
Dernière intervention
9 mars 2024
-
7 févr. 2019 à 19:09
Utilisateur anonyme - 8 févr. 2019 à 16:10
Utilisateur anonyme - 8 févr. 2019 à 16:10
A voir également:
- Adressage indexé d'un control
- Control center 4 - Télécharger - Divers Utilitaires
- Copytrans control center - Télécharger - Divers Utilitaires
- Control panel - Télécharger - Divers Utilitaires
- Fan control pc - Télécharger - Informations & Diagnostic
- Catalyst control center - Télécharger - Pilotes & Matériel
3 réponses
Utilisateur anonyme
8 févr. 2019 à 07:06
8 févr. 2019 à 07:06
Bonjour
Je tappe de tête, ça n.est peut-être pas rigoureusement exact:
Je ne suis pas certain que la clause OffType soit nécessaire car de mémoire la classe contrôle possède déjà la propriété Name.
A essayer avec ou sans.
Par contre, ce que tu fais est contraire au principe même d’un objet (et C# est un langage objet, pas seulement orienté objet).
Un objet (graphique ou non) encapsule d’autres objets, les objets encapsulés sont privés de façon à garantir le fonctionnement de l’objet.
C’est à l’objet encapsleur que l’extérieur parle, c’est lui qui se charge de parler à ses composants.
En l’état, rien ne m’empêche d’écrire « Maman » dans ce textBox, mais si tu fais des calculs derrière qui attendent un entier (je suppose que compteur est un entier) alors ça va planter.
Si tu remets ton textBox privé, comme il aurait dû rester, et que tu crées une propriété de type int.
C’est à cette propriété que tu affectes compteur, et dans le code de cette propriété, on affecte le textbox et éventuellement une variable locale (pour faire tes calculs).
Dans ce cas l’extérieur ne peut plus affecter « Mamam », le compilateur l’interdira et le fonctionnement de ton contrôle est garanti.
Un autre point C# est pensé pour répondre au pattern MVC, oú le contrôle ne contient pas la donnée, il sert à la transmission bidirectionnelle entre la source de données et l’utilisateur.
Utliser le TextBox pour faire des calculs, va à l’encontre de ce pattern.
Utiliser variable locale bindée avec le Textbox répond à ce pattern.
Ce ne sont que des conseils, c’est pas obligatoire, mais C# est optimisé pour fonctionner ainsi.
PS pour poster du code, lisible, merci de lire de d’appliquer ce qui est décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Je tappe de tête, ça n.est peut-être pas rigoureusement exact:
GD.FoCE.Controls.OffType<TextBox>.Single(x => x.Name == "cuArduino" + i).TextBoxTxbArduino5Text = Convert.ToString(compteur);
Je ne suis pas certain que la clause OffType soit nécessaire car de mémoire la classe contrôle possède déjà la propriété Name.
A essayer avec ou sans.
Par contre, ce que tu fais est contraire au principe même d’un objet (et C# est un langage objet, pas seulement orienté objet).
Un objet (graphique ou non) encapsule d’autres objets, les objets encapsulés sont privés de façon à garantir le fonctionnement de l’objet.
C’est à l’objet encapsleur que l’extérieur parle, c’est lui qui se charge de parler à ses composants.
En l’état, rien ne m’empêche d’écrire « Maman » dans ce textBox, mais si tu fais des calculs derrière qui attendent un entier (je suppose que compteur est un entier) alors ça va planter.
Si tu remets ton textBox privé, comme il aurait dû rester, et que tu crées une propriété de type int.
C’est à cette propriété que tu affectes compteur, et dans le code de cette propriété, on affecte le textbox et éventuellement une variable locale (pour faire tes calculs).
Dans ce cas l’extérieur ne peut plus affecter « Mamam », le compilateur l’interdira et le fonctionnement de ton contrôle est garanti.
Un autre point C# est pensé pour répondre au pattern MVC, oú le contrôle ne contient pas la donnée, il sert à la transmission bidirectionnelle entre la source de données et l’utilisateur.
Utliser le TextBox pour faire des calculs, va à l’encontre de ce pattern.
Utiliser variable locale bindée avec le Textbox répond à ce pattern.
Ce ne sont que des conseils, c’est pas obligatoire, mais C# est optimisé pour fonctionner ainsi.
PS pour poster du code, lisible, merci de lire de d’appliquer ce qui est décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Utilisateur anonyme
8 févr. 2019 à 09:58
8 févr. 2019 à 09:58
Ha la collection Contols n’est peut-être pas « linquable », dans ce cas, il faut faire un foreach et tester la propriété Name.
Des cours et des tutos sur la programmation objet, il y en a plein sur le net dont le mien.
Je ne prétends pas être meilleur que les autres (loin de là) mais je l’ai écrit pour C# et en tant qu’autodidacte.
https://codes-sources.commentcamarche.net/faq/11239-la-programmation-objet-appliquee-a-net-par-l-exemple-partie-1-sur-3
si tant est que j'assimile les concepts que tu évoques car je suis un autodidacte venu du vieux monde des automatismes et du VBA
Des cours et des tutos sur la programmation objet, il y en a plein sur le net dont le mien.
Je ne prétends pas être meilleur que les autres (loin de là) mais je l’ai écrit pour C# et en tant qu’autodidacte.
https://codes-sources.commentcamarche.net/faq/11239-la-programmation-objet-appliquee-a-net-par-l-exemple-partie-1-sur-3
robunccm
Messages postés
52
Date d'inscription
jeudi 7 février 2019
Statut
Membre
Dernière intervention
9 mars 2024
1
8 févr. 2019 à 11:06
8 févr. 2019 à 11:06
de quel pavé gris parles-tu ? chez moi tout est lisible correctement
où trouver le réglage dont tu parles ?
merci pour le lien je vais m'y atteler pour progresser en C#
dire qu'en VB ceci fonctionne très bien, mais bon il est sans doute impossible d'avoir le meilleur des deux mondes
je le met aussi hors balise pour le cas où la coloration syntaxique ne permettrai pas la lecture du code !
Dim str As String = "Button1"
Me.Controls.Item(str).Text = "Valider"
où trouver le réglage dont tu parles ?
merci pour le lien je vais m'y atteler pour progresser en C#
dire qu'en VB ceci fonctionne très bien, mais bon il est sans doute impossible d'avoir le meilleur des deux mondes
Dim str As String = "Button1"
Me.Controls.Item(str).Text = "Valider"
je le met aussi hors balise pour le cas où la coloration syntaxique ne permettrai pas la lecture du code !
Dim str As String = "Button1"
Me.Controls.Item(str).Text = "Valider"
Pour la coloration
Moi
Toi
C’est expliqué là
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Moi
Dim str As String = "Button1" Me.Controls.Item(str).Text = "Valider"
Toi
Dim str As String = "Button1"
Me.Controls.Item(str).Text = "Valider"
C’est expliqué là
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
robunccm
Messages postés
52
Date d'inscription
jeudi 7 février 2019
Statut
Membre
Dernière intervention
9 mars 2024
1
8 févr. 2019 à 14:40
8 févr. 2019 à 14:40
private void Remerciements(int compteur) { MessageBox.Show("Jai compris"); compteur = compteur + 1000; MessageBox.Show("Gracie " + Convert.ToString(compteur)); }
On peut clore le sujet j'ai de quoi faire
Merci pour la mille et unième fois
robunccm
Messages postés
52
Date d'inscription
jeudi 7 février 2019
Statut
Membre
Dernière intervention
9 mars 2024
1
8 févr. 2019 à 09:09
8 févr. 2019 à 09:09
Merci de ta réponse
Après correction de la coquille sur Oftype
j'ai cette erreur
'Queryable.OfType<TResult>(IQueryable)' est un méthode, qui n'est pas valide dans le contexte donné
mais fort de tes conseils je vais restructurer cette partie de mon projet, si tant est que j'assimile les concepts que tu évoques car je suis un autodidacte venu du vieux monde des automatismes et du VBA
mon application est personnelle (modélisme ferroviaire un PC dialogue avec 10 Arduino vie Ethernet)
et pourra souffrir de quelques non respect de la doctrine C
merci encore
Après correction de la coquille sur Oftype
GD.FoCE.Controls.OfType<TextBox>.Single(x => x.Name == "cuArduino" + numArd17x).TextBoxTxbArduino5Text = Convert.ToString(compteur);
j'ai cette erreur
'Queryable.OfType<TResult>(IQueryable)' est un méthode, qui n'est pas valide dans le contexte donné
mais fort de tes conseils je vais restructurer cette partie de mon projet, si tant est que j'assimile les concepts que tu évoques car je suis un autodidacte venu du vieux monde des automatismes et du VBA
mon application est personnelle (modélisme ferroviaire un PC dialogue avec 10 Arduino vie Ethernet)
et pourra souffrir de quelques non respect de la doctrine C
merci encore