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

VB.NET Discussion :

Drag & Drop


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    Points : 80
    Points
    80
    Par défaut Drag & Drop
    Bonjour à tous,

    Je souhaite pouvoir faire des glisser-déplacer, avec comme données d'entrée, une cellule de Datagridview et comme destination un listbox.

    Ayant passé la propriété AllowDrop a true pour ma listbox, j'ai écris le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub MyDataGridView3_MouseDown(sender As Object, e As MouseEventArgs) Handles MyDataGridView3.MouseDown
     
            MyDataGridView3.DoDragDrop(MyDataGridView3.SelectedRows, DragDropEffects.Copy Or DragDropEffects.Move)
     
        End Sub
     
        Private Sub listobox1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
     
            If (e.Data.GetDataPresent(DataFormats.Text)) Then
                e.Effect = DragDropEffects.Copy
            Else
                e.Effect = DragDropEffects.None
            End If
        End Sub
     
        Private Sub listbox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
            ListBox1.Items.Add(e.Data.GetData(DataFormats.Text).ToString)
        End Sub
    Le problème : J'ai l'impression que je peux prendre les données de la Datagridview mais que VB ne m'autorise pas à les copier dans la zone de la listbox.
    Une aide serait la bienvenu

    Merci d'avance

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je ne suis pas prêt à le jurer, mais je pense que ce n'est pas permis avec le ListBox; mais que cela pourrait l'être avec un ComboBox. Traditionnellement, un ListBox ne permet pas l'édition directe en cours d'exécution.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    1ere condition: caster le type dans Data.GetDataPresent(vers type idoine) c.à.d un DataGridViewSelectedRowCollection...car on veut deplacer SelectedRows de type DataGridViewSelectedRowCollection

    3eme condition : listbox accepte un item à la fois...et il va falloir "fetcher" le DataGridViewSelectedRowCollection row par row
    -dans chaque row parcourir tous les cells pour obtenir leur Value qui seront mis dans un "item" string...
    3eme condition :
    - dgv binde par l'intermediaire d'un bindingsource pour permettre de supprimer les rows droppees...Sans binding source ,dgv refuse la suppression..

    code exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    Public Class Form2
        Dim liste As New List(Of ClassExemple)
        Dim bds As New BindingSource
        Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
            liste.Add(New ClassExemple("one", 2))
            liste.Add(New ClassExemple("two", 3))
            liste.Add(New ClassExemple("three", 4))
            liste.Add(New ClassExemple("four", 5.0))
            liste.Add(New ClassExemple("five", 5.0))
            liste.Add(New ClassExemple("six", 6.0))
            liste.Add(New ClassExemple("seven", 7))
            liste.Add(New ClassExemple("eight", 8))
            liste.Add(New ClassExemple("nine", 9))
            liste.Add(New ClassExemple("ten", 10))
            bds.DataSource = liste
            DataGridView1.DataSource = bds
     
            ListBox1.AllowDrop = True
     
        End Sub
        Private Sub DataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
            DataGridView1.DoDragDrop(DataGridView1.SelectedRows, DragDropEffects.Copy Or DragDropEffects.Copy)
        End Sub
     
     
        Private Sub ListBox1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragEnter
     
            If (e.Data.GetDataPresent(GetType(DataGridViewSelectedRowCollection))) Then
                e.Effect = DragDropEffects.Copy
            Else
                e.Effect = DragDropEffects.None
            End If
     
        End Sub
     
        Private Sub ListBox1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox1.DragDrop
            Dim rows As DataGridViewSelectedRowCollection = CType(e.Data.GetData(GetType(DataGridViewSelectedRowCollection)), DataGridViewSelectedRowCollection)
     
     
            Dim ligne As String
            For Each row As DataGridViewRow In rows
     
                ligne = String.Empty
                For Each item As DataGridViewCell In row.Cells
                    ligne = ligne & " " & item.Value.ToString
                Next
                ListBox1.Items.Add(ligne)
                DataGridView1.Rows.Remove(row)
            Next
     
            'CODE MIS EN COMMENT... POUR DROPPER LA CELLULE 0 UNIQUEMENT
            'For Each row As DataGridViewRow In rows
     
            '    ListBox1.Items.Add(row.Cells(0).Value)
            '    DataGridView1.Rows.Remove(row)
            'Next
        End Sub
    End Class
     
    Public Class ClassExemple
        Public Sub New(ByVal p1 As String, ByVal p2 As Integer)
            Prop1 = p1
            Prop2 = p2
        End Sub
     
        Public Property Prop1() As String
        Public Property Prop2() As String
    End Class

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 101
    Points : 80
    Points
    80
    Par défaut
    Super merci beaucoup, je vais tester ça mais je devrais m'en sortir sans problème avec cet exemple.
    Encore merci!

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

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 17h36
  3. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

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