Problème mise à jour textbox

Fermé
robunccm Messages postés 52 Date d'inscription jeudi 7 février 2019 Statut Membre Dernière intervention 9 mars 2024 - 9 févr. 2019 à 00:11
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 10 févr. 2019 à 00:53
Bonsoir à tous
Dans un projet j'ai un Form F10Accueil instancié FoAC
ainsi qu'un autre Form F81Arduino instancié n fois FoArd170, FoArd171, ....
        public static F10Accueil FoAC = new F10Accueil();
        public static F81Arduino FoArd170 = new F81Arduino(170);
        public static F81Arduino FoArd171 = new F81Arduino(171);


dans F10Accueil j'ai btnStartArduino_Click qui sollicite un méthode dans F81Arduino pour passer un String
cela fonctionne bien
        public F10Accueil()
        {            InitializeComponent();        }

        private void btnStartArduino_Click(object sender, EventArgs e)
        {            GD.FoArd170.SendArd("Bonjour");        }

        public void ReceivedArd170(int msgx)
        {
            MessageBox.Show(Convert.ToString(msgx));
            //this.txtArduino.Text = Convert.ToString(msgx);
            this.txtArduino.Text = "Test reception";
        }



Dans F81Arduino je fais appel à la méthode ReceivedArd170 de F10Accueil pour un retour de valeur
            GD.FoAC.ReceivedArd170(numArd17x);

la méthode est bien appelé car le MessageBox affiche la valeur correcte
par contre affectation du textbox txtArduino ne se fait pas bien que déclaré en Modifiers Public
J'ai fait de nombreux essais infructueux je sèche.

Merci de votre aide Roland
A voir également:

2 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
10 févr. 2019 à 00:53
Bonsoir, je réponds rapidement, et donc non exhaustivement, car il est tard et une grosse journée m'attend demain (enfin tout à l'heure...)


Le formulaire en static, je ne pense pas que ce soit une bonne idée.

parcontre je ne fais pas de GD.FoAC.show(); ?????????????

Là on tient une piste. Pour afficher un second formulaire, lui faire un Show est nécessaire.

dois-je le faire et où ? dans program.cs ? pas dans program.cs, lui son rôle est de lancer le formulaire de démarrage. C'est dans ce premier formulaire que tu peux en lancer d'autres qui eux-même peuvent en lancer d'autres.

Attention, trop de formulaires peut devenir une usine à gaz aussi bien à coder qu'à utiliser.


je pense réécrire toujours en C# mais en WPF au lieu de WinForm.
Oui WPF est autrement plus puissant que Winform (perso je suis très loin d'en profiter au maximum), mais autant en winform on peut arriver à se passer d'écrire ses propres objets, autant en WPF c'est indispensable, il faut donc si ce n'est maitriser cette notion, y prêter une attention particulière. De plus, l'interface WPF est écrite en XAML qui est un langage en soit.
Il te faut donc en autodidacte apprendre 2 langages (C# et XAML) et un paradigme (le tout objet) de front.
Ça te demander des efforts.
Je ne te connais pas et ne préjuge ni de tes capacités ni de ta motivation, mais je préfère t'avertir sur le fort investissement nécessaire, plutôt que recevoir un message dans quelques semaines me disant que tu n'arrives à rien et que je t'ai mal conseillé.
En ce qui me concerne, j'ai procédé par étape, mais tout faire de front est réalisable.

L'utilisation de contrôles utilisateurs présente-t-il un intérêt par rapport à une création d'objet ?
Un contrôle c'est un objet, donc déjà ça n'est pas vraiment l'un ou l'autre.
Un contrôle a de l'interêt si
  • on doit l'instancier plusieurs fois (une usine à gaz qui ne sert qu'une fois n'est pas forcément mieux dans un contrôle que sur ta form)
  • on compte le réutiliser dans un autre projet


En WPF, les styles remplacent la majorité des contrôles, à condition de ne pas avoir (ou très peu) de code behind, que tout se passe en binding.
S'il doit y avoir plus de quelques lignes de code behind, alors le contrôle redevient "compétitif".
Par contre il y a 2 types de contrôles en WPF, l'un est à la mode Winform et n'accepte pas le behind (plus facile à coder), l'autre est à la mode WPF et pourra être bindé (y'a plus de boulot).

peuvent-ils être hébergés dans projet différent et intégré à la solution ? 
tout à fait, si tu as des trucs dont tu penses avoir besoin dans plusieurs solutions c'est une très bonne option, encore si tu veux mettre tout ton code métier dans une bibliothèque, faire une première interface en Winform, et dans un second temps une autre en WPF.

J'ai par exemple, un jeu d'extensions de classe qui me servent régulièrement dans un projet dll que j'intègre dans mes différentes solutions, ou dans une suite logiciels clients serveur tout le protocole de dialogue est dans une dll et les 4 solutions (un serveur, 3 clients) l'intègrent.


2
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
9 févr. 2019 à 07:53
bonjour

this.txtArduino.Text = "Test reception";
this c'est l'instance en cours, comme le Me en VBA, donc le modificateur public ne change rien, puisque tu l'affectes de façon privé.
D'ailleurs ce mot clé est rarement utile, voici le quasi-seul cas où il sert
private void Bidule(int Param)
{
   //Il y a une propriété qui s'appelle Param
   this.Param = Param;//le compilateur sait que this.Param c'est la propriété et que Param c'est le paramètre

}

Visual Studio dans les optimisations de code propose toujours de virer le this.


Convert.ToString(msgx)
peut se simplifier
 msgx.ToString()


Par contre pour ton problème, je n'ai pas de solution avec ce que tu montres.
Y'a t il un message d'erreur?
En pas à pas que se passe t'il?
1
robunccm Messages postés 52 Date d'inscription jeudi 7 février 2019 Statut Membre Dernière intervention 9 mars 2024 1
9 févr. 2019 à 11:25
Merci de ta réponse et pour tes conseils

Je nai aucun message d'erreur et en pas à pas je passe bien par toutes les lignes programmes voulues

Je pense que mon soucis tourne autour du Form F10Accueil mais je ne maîtrise pas encore assez ces mécanismes

L'objet de démarrage du projet est RobTrainV1.Program
namespace RobTrainV1
{
    static class Program
    {
        /// <summary>
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new F10Accueil());
        }
    }
}


j'ai par ailleurs déclaré
        public static F10Accueil FoAC = new F10Accueil();


parcontre je ne fais pas de GD.FoAC.show(); ????????????? dois-je le faire et où ? dans program.cs ?

Merci du temps que tu me consacres
0
robunccm Messages postés 52 Date d'inscription jeudi 7 février 2019 Statut Membre Dernière intervention 9 mars 2024 1
9 févr. 2019 à 16:05
Je potasse avec attention tes tutos qui naturellement éclaircissent bien des points mais me confrontent à l'étendue de mon ignorance. De plus ils me conduisent à repenser l'organisation de mon application que je pense réécrire toujours en C# mais en WPF au lieu de WinForm.

Une petite question: dans mon application initiale j'ai un projet contenant des contrôles utilisateurs que j'ai créés. L'utilisation de contrôles utilisateurs présente-t-il un intérêt par rapport à une création d'objet ?
Je présent une réponse en faveur des objets, si oui, peuvent-ils être hébergés dans projet différent et intégré à la solution ?

N'hésite pas à lever un flag lorsque tu me trouveras trop envahissant ...
0