Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[VB.Net] Geen probleem, meer een vraag

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik ben bezig een tooltje te schrijven waarmee ik makkelijk en snel artwork van verschillende artiesten kan verwerken.

Ik liep tegen een probleem aan; bij het dragdroppen van rows uit een datagridview op een listbox leek het wel of het niet mogelijk was om de class die ik gebruik om data heen en weer te schuiven niet teruggecast kom worden met e.data.getdata().

De class (dragdropdatastore) word ook in Form1 gedefinieerd, dus ik ging ervan uit dat ik 'm gewoon terug kon casten, maar het bleek noodzakelijk om e.data.getdata naar CGSMan.Form1+dragdropdatastore te casten, alleen 'dragdropdatastore' leverd een reference naar Nothing op.

Het werkt maar het ziet er niet echt fraai uit - is het mogelijk om in de DragDrop eventhandler TOCH naar dragdropdatastore te casten en niet naar CGSMan.Form1+dragdropdatastore?

Waarom staat er uberhaupt een + in?


Visual Basic .NET:
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
71
72
73
74
75
76
77
    Public Class dragdropdatastore

        Private myAction As String
        Private myIDList As StringCollection

        Public Sub New(ByVal myaction As String, ByVal myidlist As StringCollection)
            Me.myAction = myaction
            Me.myIDList = myIDList
        End Sub

        Public Property Action() As String
            Set(ByVal value As String)
                myAction = value
            End Set
            Get
                Return myAction
            End Get
        End Property

        Public Property IDList() As StringCollection
            Set(ByVal value As StringCollection)
                myIDList = value
            End Set
            Get
                Return myIDList
            End Get
        End Property

        Public Overrides Function ToString() As String
            Return String.Format(CultureInfo.InvariantCulture, "{0} - Containing {1} IDs", Me.myAction, Me.myIDList.Count)
        End Function

        Public Function GiveAction() As String
            Return Me.myAction
        End Function

        Public Function GiveIDList() As StringCollection
            Return Me.myIDList
        End Function

    End Class

    Private Sub Artist_Addresses_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Artist_Addresses.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Right Then

            Dim Index As Integer
            Dim idlist As New StringCollection
            For Each SelectedRow As DataGridViewRow In Artist_Addresses.SelectedRows
                idlist.Add(SelectedRow.Cells("AddressID").Value.ToString)
            Next
            Dim ddstore As New dragdropdatastore("AdressesToNewArtist", idlist)

            Index = Artist_Addresses.HitTest(e.X, e.Y).RowIndex

            If Index > -1 Then
                Artist_Addresses.DoDragDrop(ddstore, DragDropEffects.Copy)
            End If

        End If
    End Sub

    Private Sub Artwork_ArtistList_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Artist_ArtistsFound.DragEnter, Artist_ArtistsSelection.DragEnter
        e.Effect = DragDropEffects.Copy
    End Sub


    Private Sub Artwork_ArtistList_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Artist_ArtistsFound.DragDrop, Artist_ArtistsSelection.DragDrop
        If e.Data.GetDataPresent("CGSMan.Form1+dragdropdatastore") Then

            Dim ddstore As dragdropdatastore = DirectCast(e.Data.GetData("CGSMan.Form1+dragdropdatastore"), dragdropdatastore)
            Dim ddIDlist As StringCollection = ddstore.GiveIDList()

        ' Etc.


        End If
    End Sub

  • Serpie
  • Registratie: Maart 2005
  • Laatst online: 01-07-2023
De class (dragdropdatastore) word ook in Form1 gedefinieerd
Juist hierom denk ik, je maakt een inner class aan in Form 1. Als je de klasse verhuist naar buiten de "Public Class Form1" dan zul je waarschijnlijk gewoon "CGSMan.dragdropdatastore" kunnen gebruiken.

Ik weet het niet zeker maar ik denk dat die plus is om te verwijzen naar de inner class, al zou ik eerder een "." verwachten.

[ Voor 4% gewijzigd door Serpie op 11-08-2007 21:13 ]