IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Récupérer dans une form la donnée d'un contrôle perso


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 103
    Points
    103
    Par défaut Récupérer dans une form la donnée d'un contrôle perso
    Bonjour,

    J'ai créé un contrôle utilisateur qui est tout simplement un clavier "virtuel" pouvant être intégré dans une form. Jusque là pas de problème...

    Chacun de mes boutons a un événement qui modifie la propriété "tag" de mon contrôle, propriété qui est accessible à partir de ma form puisque c'est dans celle-ci que j'ai mis mon contrôle...

    Le but de tout ceci est de modifier le contenu d'une textbox avec le caractère tapé sur le clavier virtuel. Le problème c'est que je ne sais pas trop comment m'y prendre... comment mettre un événement au niveau de ma form qui serait déclenché lors d'un click sur un des boutons de mon contrôle... il y a bien l'événement click du contrôle en lui-même mais bien sur ca ne convient pas... je souhaiterais que ma textbox sois mis à jour avec le contenu de la propriété tag de mon contrôle lors d'un clic sur un bouton et non sur le clic du contrôle !!

    merci d'avance pour votre aide !

  2. #2
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Il faudrait que les événements Click des boutons de ton clavier déclenche l'événement Click de ton UserControl clavier.

    La form s'abonnera alors à l'événement Click du clavier et pourra changer la valeur de la TextBox.

    Par contre, je créerais sûrement un EventArgs spécifique afin de pouvoir lui passer la valeur du bouton cliqué.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Et moi je me demande si ce User Control qui semble etre rempli de boutons ne devrait pas simplement et UN control avec une grande image de clavier constituée de petits rectangle et une detection de position sur les event normaux d'un control (la position permettant de determiner la touche choisie)
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  4. #4
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    C'est juste une autre méthode de faire, chacune ayant ses forces et ses faiblesses, je ne pense pas que l'une soit foncièrement meilleure que l'autre.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  5. #5
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Citation Envoyé par laedit Voir le message
    C'est juste une autre méthode de faire, chacune ayant ses forces et ses faiblesses, je ne pense pas que l'une soit foncièrement meilleure que l'autre.
    Bien sur mais j'ai quand meme le sentiment qu'il sera plus facile de gerer UN control et ses event que les 50 boutons pour un clavier Alphanumerique tout simple

    Mais c'est clair que la methode de l'image a d'autres contrainte, ne fut-ce que genérer une image jolie, mais elle sera en définitive je pense plus souple !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 103
    Points
    103
    Par défaut
    Merci à vous deux pour vos réponses qui me semblent toutes deux très judicieuses.

    Je m'interroge concernant la solution proposée par olibara, elle me semble très intéressante car elle me permettrait d'avoir une interface plus agréable à moindre frais (je me vois mal redessiner les boutons de mon clavier...) ca devrait faire plaisir à mon chef qui est friand de ce genre de choses... Le problème c'est qu'il faudrait alors que je revois tout le code de mon contrôle et notamment le placement des boutons en fonction de la résolution de l'écran sur lequel j'ai passé pas mal de temps(je précise que c'est pour le compact framework donc notamment pas de TableLayoutPanel, obligé de redimensionner et repositionner tous les contrôles un par un...).

    Bon je vais tester tout ça et vous tiens au courant.

  7. #7
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut

    Pratiquement tu travaillerait avec une liste de rectangle (et quelque autres propriétés utile)
    Tu definis la taille des rectangle en fonction de la taille autorisée pour ton control et tu les dessines suivant la matrice prévue
    Sur un click tu determine dans quel rectangle se trouve la position du click et le tour est joué
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  8. #8
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    en complément de la solution d'olibara, je fais un petit ajout...

    Pour faire simple.. ton clavier, si tu en fais une image.. je te conseille en fait de faire 2 images

    1 pour l'affichage et l'autre qui sera ton mask de clavier.

    J'explique.. pour chaque touche de ton clavier, tu assigneras une couleur et ensuite, avec la fonction GetPixel() par exemple (ou autre en fonction du CF), tu regarderas dans l'image Mask quelle couleur se trouve là ou la souris se trouve. Ainsi, tu pourrais "facilement" trouver ensuite la touche associée.

    Si tu fais un "zoom" de ton clavier, il te suffira d'appliquer la meme zoom à ton image de mask, et tu n'auras pas à définir les rectangles ou forme alambiquer pour ton clavier...

    Ce genre de pratique est à mon humble avis, la plus simple et la plus rapide à mettre en oeuvre... faut juste faire "l'image du clavier" avec le masque de couleur approprié...
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  9. #9
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut TheMonz

    Personnelement, je pensais a une liste de classe dérivée de Rectangle contenant la valeur de la touche et tout ce qui peut etre utile au dessin et au traitement.
    Lors d'un click on parcours ces rectangles dont les methodes Contains determinera ou se trouve le click

    Mais ton astuce par traitement pur d'image aurait pour avantage de pouvoir facilement dessiner dimensionner ou etirer l'image dans tous les sens.
    Cependant le traitement par Getpixel() me semble un peu plus "barbare"
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  10. #10
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    le getPixel() est un peu "brute" de décoffrage mais tellement plus rapide

    J'ai fait un test...

    J'ai 10000 Rectangle avec chacun une région...

    JE cherche dans la liste des régions laquelle contient ma souris

    Résultat: 40000 Tick (avec Stopwatch)
    Le même test en utilisant le GetPixel() et en utilisant la couleur récupérée pour trouver l'objet avec un dictionnaire indexé par la couleur de chaque rectangle (différentes dans mon image masque) ==> 40/60 Tick

    LA différence est tellement importante que je pense que les régions, ou les "Contains" de rectangle, c bien... mais ca ne sera "jamais" plus rapide que la technique du pixel contenant l'index de l'objet

    Enfin, c mon avis !!! et je le partage
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 103
    Points
    103
    Par défaut
    Désolé pour le temps que je mes à répondre mais je suis un peu débordé au niveau du taf en ce moment

    J'ai envisagé la solution d'une image unique (et un masque de couleur) pour le clavier avec utilisation de getpixel mais le problème c'est qu' il faudrait que j'ai au mininum 4 images car mon programme doit tourner au minimum sur un windows ce ayant une résolution de 800 x 600 et un pocket pc en 240 x 320... passer une image du 800x600 au 240 x 320 donnerait un résultat plutôt moche... De plus je n'ai finalement pas besoins de tous les caractères du clavier. Les touches alt, shift et caps lock ne seront pas utilisées. J'aurais donc un caractère par touche ce qui simplifie le travail avec les boutons. Je récupère juste la propriété "text" de mon bouton. Alors qu'avec une image unique de tout le clavier je dois détecter le clic, rechercher la touche correspondante et afficher le caractère (tous les caractères devant être stockés quelques part...).

    Donc finalement je reviens à ma première solution... le souci c'est que je suis un peu largué entre les event les delegate et tout ce qui s'en suit....

    Dans mon contrôle chaque appuie sur un bouton appelle l'évènement click du contrôle. Je pensais donc que lorsque je cliquerais sur un bouton cela appellerait également l'événement click du clavier au niveau de ma form puisque cela appelle l'événement click de mon contrôle (je ne suis pas sur d'être très clair mais bon...). J'en demande peut être beaucoup mais pourriez-vous me donner plus de détails concernant la manière de procéder ? car je galère la dessus depuis ce matin 9h, juste pour ces saletés de boutons ! je vais craquer ! merci.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 103
    Points
    103
    Par défaut
    RAS... j'ai finalement réussi, une journée pour 5 lignes de code ... décidément je deviens de plus en plus performant !

    En tout cas merci pour votre aide et je garde la solution d'olibara et themonz31 bien au chaud car il y a de force chance qu'elle me serve pour un autre projet.


    PS : vivement les congés...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/10/2008, 16h11
  2. [MySQL] Récupérer une variable d'une fonction et enregistrement dans une base de données
    Par Mikke dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 03/03/2008, 17h02
  3. Réponses: 1
    Dernier message: 18/02/2008, 17h17
  4. données renseignées dans une form
    Par stephane.dantigny dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 03/10/2007, 07h21
  5. Réponses: 3
    Dernier message: 21/06/2007, 01h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo