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 Presentation Foundation Discussion :

Drag and drop de listview vers zone de texte web


Sujet :

Windows Presentation Foundation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Drag and drop de listview vers zone de texte web
    Bonjour à tous et à toutes,
    tjs dans mon appli, je bute maintenant sur le Drag and drop entre une listview, dont je souhaiterais pouvoir glisser le texte contenu dans les items vers des zones de texte d'une page web ouverte dans un webbrowser inclu dans la même appli.

    Je tente cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub ListView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles ListView1.MouseDown
            DragDrop.DoDragDrop(ListView1, "hihi", DragDropEffects.Copy)
        End Sub
    En mettant "hihi" pour commencer, mais sans effet.
    Une idée ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Je me répond à moi même :
    En remplacant Handles ListView1.MouseDown par Handles ListView1.PreviewMouseDown ca fonctionne.
    Ne me demandez pas pourquoi ...

    Suite de mon aventure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub ListView1_PreviewMouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles ListView1.PreviewMouseDown
            DragDrop.DoDragDrop(ListView1, ListView1.SelectedItem.app1, DragDropEffects.Copy)
        End Sub
    Ne fonctionne que lorsqu'une selection est faite dans la listview, sinon erreur.
    En mettant un try ... catch ca fonctionne, mais c'est pas joli.
    Y a -t il un moyen de selectionner l'item survollé par la souris avant le drag and drop ?
    Ou alors je m'oriente vers la mauvaise voie pour arriver à mes fins ?

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Plutôt que de mettre ton évènement sur la ListView, met le sur les ListViewItem. Ainsi le sender de ton évènement sera le ListViewItem et tu pourras le sélectionner sans problème

    Soit :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ListView ... >
     
      <ListView.Resources>
        <Style TargetType="{x:Type ListViewItem}">
          <EventSetter Event="PreviewMouseLeftButtonDown" Handler="Lvi_PreviewMouseLeftButtonDown" />
        </Style>
      </ListView.Resources>
    </ListView>

    Et dans ton évènement PreviewMouseLeftButtonDown, avant d'entamer le drag & drop, tu castes le sender en ListViewItem et tu le sélectionnes avec la propriété IsSelected.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par binoo Voir le message

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ListView ... >
     
      <ListView.Resources>
        <Style TargetType="{x:Type ListViewItem}">
          <EventSetter Event="PreviewMouseLeftButtonDown" Handler="Lvi_PreviewMouseLeftButtonDown" />
        </Style>
      </ListView.Resources>
    </ListView>
    Merci binoo pour l'intérêt porté à mon pb.
    J'ai bien ajouté le code ci-dessus, mais la procédure Lvi_PreviewMouseLeftButtonDown ne se déclenche pas lorsque je fais un drag sur un item.
    Ai-je oublié qqchose ?

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Tu veux dire qu'il ne passes pas dans Lvi_PreviewMouseLeftButtonDown ?



    Sinon, essaies avec l'évènement MouseMove (ou PreviewMouseMove à voir) pour le Drag & Drop. Tu peux essayer avec le code suivant :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ListView ... >
     
      <ListView.Resources>
        <Style TargetType="{x:Type ListViewItem}">
          <EventSetter Event="MouseMove" Handler="Lvi_MouseMove" />
        </Style>
      </ListView.Resources>
    </ListView>

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private void Lvi_MouseMove(object sender, MouseEventArgs e) {
      if (e.LeftButton == MouseButtonState.Pressed) {
        ((ListViewItem)sender).IsSelected = true;
        DragDrop.DoDragDrop(ListView1, ListView1.SelectedItem.app1, DragDropEffects.Copy);
      }
    }

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    En fait aucune procédure n'est lancée, ni avec MouseMove, ni avec PreviewMouseMove. J'oublie certainement qqchose ...

    ci-dessous mes codes :

    Dans mon fichier Window1.xaml.vb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub Lvi_PreviewMouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
            MsgBox("ca se déclenche")
        End Sub
    Dans mon fichier Window1.xaml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <TabItem Header="Positif" Name="TabPage1" Background="#FF38362F" BorderBrush="#FF38362F" Foreground="Black"> 
                                 <ListView ScrollViewer.HorizontalScrollBarVisibility="Disabled" AlternationCount="2" ItemsSource="{Binding}" ItemContainerStyle="{DynamicResource CustomListViewItemStyle}" Name="ListView1" MaxWidth="380" Loaded="ListView4Loaded"  Width="Auto" Background="#FF38362F" ClipToBounds="False" BorderBrush="#FF38362F" Cursor="Pen" FontSize="14" Margin="2" Padding="2" SelectionMode="Single" VerticalContentAlignment="Stretch" BorderThickness="2" Foreground="Black" SelectedIndex="0">
     
                                     <ListView.Resources>
                            <Style TargetType="{x:Type ListViewItem}">
                                <EventSetter Event="PreviewMouseMove" Handler="Lvi_PreviewMouseMove" />
                            </Style>
                        </ListView.Resources>
     
                        <ListView.ContextMenu>
    etc.

  7. #7
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Le truc c'est que tu as définis un ItemContainerStyle, du coup il doit être prioritaire par rapport au style qu'on a définit dans ListView.Resources.

    Tu peux enlever ItemContainerStyle dans un premier temps pour voir si l'évènement se déclenche bien.

    Après pour garder le style CustomListViewItemStyle que tu as défini, tu peux ajouter dans celui-ci la ligne :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <EventSetter Event="PreviewMouseMove" Handler="Lvi_PreviewMouseMove" />

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Génial, tout fonctionne comme prévu. Merci beaucoup.
    J'ai procédé selon tes conseils, et le drag s'effectue comme il faut, avec en plus le style de la listview qui s'applique correctement.
    C'était bien un pb de priorité !

    Dernière question et après j'arrête de t'embêter :
    Y a-t-il un moyen d'afficher le contenu de ce qui est "draganddroppé" sous le curseur, plutot que le sigle interdit (quand la zone survolée ne peut recevoir le contenu), ou le petit + (lorsqu'elle peut l'accepter) ?

  9. #9
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Citation Envoyé par poupoune1974
    Dernière question et après j'arrête de t'embêter :
    Y a-t-il un moyen d'afficher le contenu de ce qui est "draganddroppé" sous le curseur, plutot que le sigle interdit (quand la zone survolée ne peut recevoir le contenu), ou le petit + (lorsqu'elle peut l'accepter) ?
    Oui en utilisant les adorner c'est possible. Tu as un exemple ici :
    http://bea.stollnitz.com/blog/?p=53

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci pour tout,
    Génial, ce forum !

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

Discussions similaires

  1. [WD14] Drag And Drop table hiérarchique vers table
    Par Thanor dans le forum WinDev
    Réponses: 6
    Dernier message: 24/11/2009, 12h20
  2. Drag and Drop entre ListView
    Par KoRiGaN44 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 30/04/2009, 10h47
  3. Drag And Drop: Win32(MFC) vers WPF
    Par sacoum dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 17/06/2008, 10h29
  4. Drag and Drop de listview
    Par chris81 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/03/2008, 11h42
  5. Faire un drag and drop depuis IE vers un TListView
    Par ALEX77 dans le forum Composants VCL
    Réponses: 8
    Dernier message: 11/11/2004, 15h27

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