Drag and drop multifenetre

Résolu
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008 - 1 juin 2006 à 12:40
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 2 juin 2006 à 19:32
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 juin 2006 à 23:24
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#
*/
3
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
1 juin 2006 à 14:17
>> 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é?
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
1 juin 2006 à 19:44
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
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
2 juin 2006 à 08:35
Merci Coq, et je met le code que tu ma donné dans le DragDrop de mon textbox receveur c'est ca ?

duck88
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
2 juin 2006 à 09:36
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
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
2 juin 2006 à 11:02
Cest bien ce que j'avais compris
duck88
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
2 juin 2006 à 13:56
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
0
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
2 juin 2006 à 14:04
Bon j'ai redeveloppé cette partie dans un nouveau projet, et je ne sais pas trop pourquoi ca marche niquel.


Merci a tous

duck88
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
2 juin 2006 à 19:32
Tu es sur de t'être abonné aux events DragEnter et DragDrop du textbox et pas du form ?

/*
coq
MVP Visual C#
*/
0
Rejoignez-nous