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 :

[C#.Net] Evenement Paste (clickDroit souris)


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut [C#.Net] Evenement Paste (clickDroit souris)
    Bonjour,

    J'essaie de faire un contrôle personnalisé qui dérive de TextBox, j'utilise la méthode KeyPress avec une expression régulière pour interdire n'importe quoi comme saisie... mais si on fait un copier/coller avec la souris on peut y mettre tout et n'importe quoi.

    J'aimerai donc savoir comment capter l'evenement "coller" pour lui appliquer le même code ?

    Merci

  2. #2
    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
    Par défaut
    l'event TextChanged ou validated ne te serait-il pas d'un grand secours ?

    The Monz, Toulouse

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Vu que tu derives de textbox, il suffit d'intercepter le message de paste dans ta classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            int WM_PASTE = 0x0302;
            protected override void WndProc(ref Message m)
            {
                if (m.Msg == WM_PASTE)
                {
                    return;
                }
                base.WndProc(ref m);
            }
    Cela interdira tous les paste (menu contextuel, ctrl + V ou autres).

    Bon courage.

  4. #4
    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
    Par défaut
    salut

    tu peux aussi faire un override de OnTextChanged()

    The Monz, Toulouse

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2004
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 359
    Par défaut
    Alors :
    - Avec TextChanged le problème c'est que l'événement est déclanché une fois que le texte à changé... donc après le coller, pour moi c'est déjà trop tard, non ?

    - Interdire, le coller ?! Non, c'est pas le comportement que je cherche puisqu'on peut coller du moment que ça respecte mon expression régulière !

    - Validated s'active quand le contrôle perd le focus, ou pas loin, en tout cas pas au moment ou le texte change...

    Par contre, je peux voir du coté de TextChanged, prendre l'expression et la soumettre à mon RegEx et si elle n'est pas valide, revenir à l'état précédant le coller... seulement il faut savoir revenir à l'état précédant ? Je vais voir s'il n'y a pas un undo() ou un truc du genre !

    Merci

  6. #6
    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
    Par défaut
    si tu fais Ctrl-Z sur une textbox, tu auras le Undo qui fonctionnera

    (par contre, si tu rappuies une nouvelle fois, ca te remet la valeur précedente)

    en clair, le Undo sur une textbox est "juste" un switch entre la nouvelle valeur et la valeur précedente.. mais il n'y a pas une "pile" des valeurs précédentes

    sinon, pour le undo/redo, j'aime bien la librairie Dejavu (free sur sourceforge)

    The Monz, Toulouse

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Citation Envoyé par Ticoche Voir le message
    - Interdire, le coller ?! Non, c'est pas le comportement que je cherche puisqu'on peut coller du moment que ça respecte mon expression régulière !
    A ok ! desolé mal lu. =p

    Dans ce cas, tu peux en interceptant le message Paste, et gerer toi meme le collage dans la textbox en recuperant les infos à la mimine. L'avantage, c'est que etant donné que tout se fait en amont, tu restes (tout comme pour le Keypress) sur que ce qui est dans la textbox est autorisé.

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

Discussions similaires

  1. [VB NET]: Evenement sur Winform: "sur réduction"
    Par ADONET dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/02/2006, 11h52
  2. [vb.net] evenement Keypress dans un Textbox
    Par arnolem dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/10/2005, 17h15
  3. Ecouter les evenements clavier et souris
    Par init dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 24/11/2004, 20h02
  4. [VB.Net]Evenement dans un Repeater !!
    Par m-mas dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/09/2004, 17h13
  5. [VB.NET] Evenement par défaut sur controle personnalisé
    Par anthony70 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/08/2004, 16h19

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