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 :

Drag And Drop dans menu contextuel


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut Drag And Drop dans menu contextuel
    Bonjour, ou re ()
    je n'arrive pas a authoriser et faire un drag and drop dans mon menu contextuel.
    J'ai plusieurs éléments et je voudrais que l'utilisateur puisse les réorganiser à sa guise par exemple comme dans le menu démarrer.
    Mon ContextMenuStrip est 'créé à la main' mais meme avec le designer je ne vois quelle option modifier.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    A ma connaissance le drag-drop n'est pas géré par ContextMenu... mais par contre ça semble être supporté par ContextMenuStrip

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    Alors au temps pour moi mais mon menu déroulant est à base de ContextMenuStrip et de ToolStripMenuItem.
    Est ce possible ?
    je veux faire du reordering de mon menu deroulant :
    Menu->1
    ->2
    ->3

    que ça devienne :
    Menu->3
    ->1
    ->2
    avec si possible un drag du 3 et un drop au dessus du 1 ..

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Il faut gérer ça soi-même, en utilisant ces membres :
    - propriété AllowDrop
    - évènements DragEnter, DragLeave, DragOver, DragDrop,
    - méthode DoDragDrop

    Je me rappelle pas exactement comment ça marche, cherche un tutoriel sur le drag & drop

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Points : 706
    Points
    706
    Par défaut
    Bonjour,

    - Il faut déclencher la méthode DoDragDrop. La méthode déclenche l'événement DragEnter

    - Dans l'événement DragEnter, on verifie le type de données que l'on veut dropper (avec la méthode GetDataPresent)

    - L'événement DragDrop est ensuite déclenché. La on peut modifier la/les propriétés du contrôle qui reçoit l'opération glisser déplacer.

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Je passe pour un affreux méchant manquant d'imagination en disant que faire un menu contextuel supportant le drag n drop est probablement une mauvaise idée ?

  7. #7
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par Guulh Voir le message
    Je passe pour un affreux méchant manquant d'imagination en disant que faire un menu contextuel supportant le drag n drop est probablement une mauvaise idée ?
    Non, je suis du même avis que toi ^^

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    En termes d'ergonomie ça me parait effectivement assez discutable... mais bon, je suppose que Yogi a ses raisons de vouloir faire ça

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    Merci pour les conseils tomlev, j'ai trouvé sur le web des sources d'un mini projet avec drag and drop de données bien commenté qui m'a permi de comprendre comment faire. Et ça marche.Avec les events MouseDown,dragenter et dragdrop..

    En fait mon menu contextuel apparait lors d'un clic droit sur les headers de colonnes des cellules d'un datagridview.
    Il liste l'ordre de tri des colonnes, car mon datagridview peut faire un tri multicolonnes, et le sens de tri de chaque colonne.
    Je voulais faire du drag and drop , pour que l'utilisateur puisse changer facielement et sans que ça lui prenne trop de temp l'ordre de tri des colonnes. Avec le d&d on fait passer une colonne avant ou apres les autres.

    Par contre je voudrais bien savoir pourquoi du d&d est pas top dans un menu ?

    EDIT : J'ai une question sur le sujet encore, j'arrive a deplacer un objet. Mais le probleme que j'ai maintenant c'est que je ne sais pas , au moment du déposer, OU se trouve mon objet. C'est à dire que je ne sais pas si je depose mon 'menu' entre 2 autres menu (si oui lesquels?) ou si je le met au début ou à la fin du menu contextuel?

  10. #10
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par Yogy Voir le message
    Par contre je voudrais bien savoir pourquoi du d&d est pas top dans un menu ?
    Parce qu'en règle générale, les questions d'interface que l'on se pose ont déjà été réfléchies des centaines de fois par des gens qui sont payés à plein temps pour ça, et que tout comportement qui s'éloigne très sensiblement des "normes" (que l'on retrouve d'ailleurs sous quasiment tous les systèmes, windows, linux, mac, etc.) ont soit des effets de bords imprévus ou vont déstabiliser les utilisateurs. Or Windows ne supporte cette fonctionnalité que dans le menu démarrer, qui est le seul menu customisable de toute son interface. Microsoft a visiblement considéré que c'était faisable, mais ne l'a pas étendu, pour de probables bonnes raisons.

    Voilà

  11. #11
    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 194
    Points
    5 194
    Par défaut
    Microsoft a visiblement considéré que c'était faisable, mais ne l'a pas étendu, pour de probables bonnes raisons.
    Peut-etre pour que d'un windows à un autre, les utilisateurs ne soient pas "trop" perdu...

    The Monz, Toulouse

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    ok pour tout ça.
    Mais pour répondre à ma question sur la localisation au moment du drop. Que ça soit dans un contextmenu, ou une treeview comment faire ?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    en fait j'ai reussi ce que je voulais faire avec la propriété AllowItemReorder que j'ai mise à true.

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par Yogy Voir le message
    en fait j'ai reussi ce que je voulais faire avec la propriété AllowItemReorder que j'ai mise à true.
    c'est suffisant, ou il faut aussi gérer les events ?

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 259
    Points : 90
    Points
    90
    Par défaut
    Alors c'est peut etre tiré par les cheveux ou 'bricolé' mais pour le moment j'ai pas trouvé mieux.. !
    j'ai réussi a faire ce que je voulais en rajoutant ceci :
    this.HeaderContextMenu.Invalidated += new System.Windows.Forms.InvalidateEventHandler(this.HeaderContextMenuInvalidated); lors de la créaion de mon menu contextuel.

    Et dans ma fonction comme HeaderContextMenuInvalidated est appelé a chaque fois que le menu a besoin d'être redessiné, si j'ai bien compris le role de Invalidate. JE compare le menu actuelle à la version précédente (sauvegardé dans un tableau) si les version sont égales c'est qu'il n'y a pas eu de drag & drop. Sinon c'est qu'il y en a eu un et je relance donc le tri de mes colonnes de mon datagridview en fonction de l'ordre du menu contextuel, et je sauvegarde le menu contextuel dans le tableau de sauvegarde. Qui me servira pour la prochaine comparaison.
    Mais ya peut etre mieux ?

Discussions similaires

  1. Drag And Drop dans une Grid
    Par amandinerenard dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 13/05/2013, 17h41
  2. Drag and drop dans un input
    Par kriekbellevue dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/12/2006, 20h55
  3. [VB.net] Drag and drop dans une Treeview
    Par gégécap dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/10/2006, 10h05
  4. [VB.NET]Drag and Drop dans une Listview
    Par gégécap dans le forum Windows Forms
    Réponses: 5
    Dernier message: 23/08/2006, 18h41
  5. Drag and drop dans un TTreeView
    Par BigBenQ dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/10/2005, 14h57

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