Drag and drop multifenetre [Résolu]

Signaler
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour à tous,



J'ai créé une application multifenetre, et j'aimerai pouvoir faire un
drag and drop entre 2 fenetre differente afin de passé une string de la
fenetre A vers la fenetre B.


Le probleme est que malgré l'aide que j'ai trouvé sur ce forum, cela ne marche pas.



 Pour la fenetre receveuse j'ai bien AllowDrop a true sur mon
textbox, mon evenement dragdrop contient bien e.effect =
DragDropEffects.all et mon DragEnter est egalement bien implémenté.



Pour  demarrer le drag and drop de la fenetre  A j'utilise la fonction  textbox1.DoDragDrop(...



Pourriez vous m'aider pour que cette fonctionnalilté fonctionne.



Merci à tous pour vos reponses.

duck88

9 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Salut,

L'appel de ToString sur une chaine de caractères est inutile.
Ensuite, pour gérer le drop tu ne dois pas te servir de l'event /library/fre/cpref/html/frlrfSystemWindowsFormsControlClassDragOverTopic.asp DragOver mais de DragDrop.
Et e.Data n'est pas ta chaine mais une instance d'une classe implémentant l'interface IDataObject (dans le cas présent il s'agit d'une instance de =/library/fre/cpref/html/frlrfsystemwindowsformsdataobjectclasstopic.asp System.Windows.Forms.DataObject ).

Donc tu dois te servir d'un code de ce genre pour la récupération de ton texte :
if ( e.Data.GetDataPresent(typeof(string)) )
                this.textBox2.Text = e.Data.GetData(typeof(string)) as string;

Voilà, ça devrait passer maintenant.

/*
coq
MVP Visual C#
*/
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
>> cela ne marche pas

Pourrais tu nous donner plus de précision sur ce qui ne marche pas? Recois tu les evenements DragEnter dans ta fenêtre "destination" ? Renseignes tu correctement la valeur du DragEffext dans l'evènement DragEnter ? Est ce que l'évenement DragDrop est levé?
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Je vais essayé d'etre plus clair.

dans une fenetre MDI j'ai la fenetre A et la fenetre B

la fenetre A possede un textbox nommé textbox1

la fenetre B possede un textbox nommé textbox2

Dans la fenetre A :
Dans l'evenement mousedown du textbox j'ai :

 private void textBox1_MouseDown(object sender, MouseEventArgs e)

        {

           string essai = this.textBox1.text.toString() ;

            textBox1.DoDragDrop(essai, DragDropEffects.All);

        }

Dans la fenetre B :

Dans le  InitializeComponent() de la fenetre B j'ai  : this.texbox2.AllowDrop = true ;

dans l'evenement DragEnter j'ai :

 private void textBox1_DragEnter(object sender, DragEventArgs e)

        {

            e.Effect = DragDropEffects.All; ;

         }


dans l'evenement DragOver j'ai :


    private void textBox1_DragOver(object sender, DragEventArgs e)

        {

            textbox2.text = (string)(e.data) ;

        }


J'espere avoir été plus clair et que vous pourrez m'aider.
duck88
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Merci Coq, et je met le code que tu ma donné dans le DragDrop de mon textbox receveur c'est ca ?

duck88
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
56
Salut,
Ben en fait ça dépend où tu veux laisser dropper l'utilisateur.
Si tu choisis le DragDrop du Form alors il pourra dropper sur la form, et ça viendra afficher dans la textBox.
Si tu choisis le DragDrop du TextBox, alors il pourra seulement dropper sur le textBox... logique...

VC# forever
=13319
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Cest bien ce que j'avais compris
duck88
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

J'ai toujours le meme soucis, impossible de deposé le clic sur la
fenetre B j'ai l'icone de la souris en interdiction. Pourtant j'ai mon
allowdrop a true, j'comprend pas
duck88
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Bon j'ai redeveloppé cette partie dans un nouveau projet, et je ne sais pas trop pourquoi ca marche niquel.


Merci a tous

duck88
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Tu es sur de t'être abonné aux events DragEnter et DragDrop du textbox et pas du form ?

/*
coq
MVP Visual C#
*/