| |
VB.NET - Fortgeschrittenedrag&drop beispiel | | | Autor: tekla | Datum: 05.12.05 21:41 |
| hallo,
wie kann man pictureboxes per drag&drop willkürlich in andere pictureboxes ziehen ?
kann mir da jemand helfen? Im folgenden Beispiel bleibt mir die eine pcb immer in der pcb2 kleben und lässt sich nimmer wegziehen
Was muss ich ändern?
Imports Microsoft.VisualBasic
Imports System
Imports System.IO
Imports System.Drawing
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Vom Windows Form Designer generierter Code "
#End Region
Protected Shared m_PreviousMouseEventArgs As MouseEventArgs
Const AllowAll As DragDropEffects = _
DragDropEffects.Copy Or _
DragDropEffects.Link Or _
DragDropEffects.Move Or _
DragDropEffects.Scroll
'Const AllowAll As DragDropEffects = DragDropEffects.All 'unterschlägt DragDropEffects.Link (Bug?)
Private Sub frmMoveControl_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
' 1) Das Drag-Target muß AllowDrop=True haben.
PictureBox2.AllowDrop = True
End Sub
Protected Shared Sub SourceControl_MouseDown( _
ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles PictureBox1.MouseDown
'e enthält möglicherweise die Startposition eines Drag-Vorgangs
If e.Button = MouseButtons.Left Then
m_PreviousMouseEventArgs = e
End If
End Sub
Protected Sub PictureBox1_MouseMove( _
ByVal sender As System.Object, ByVal e As MouseEventArgs) Handles PictureBox1.MouseMove
'2) im Mousemove der Source wird geprüft, ob mit gedrückter li Mousetaste bewegt wird, dann wird
'! ein Dataobjekt befüllt, und DoDragDrop gestartet.
If e.Button = MouseButtons.Left AndAlso m_PreviousMouseEventArgs.Button = MouseButtons.Left Then
'e enthält möglicherweise die Startposition eines Drag-Vorgangs - tatsächlich!!!
Dim ctlSource As Control = DirectCast(sender, Control)
Dim oData As New DataObject("DragSource", ctlSource)
oData.SetData("MouseX", m_PreviousMouseEventArgs.X)
oData.SetData("MouseY", m_PreviousMouseEventArgs.Y)
If ctlSource.DoDragDrop(oData, AllowAll) = DragDropEffects.None Then
'Ja, was?
End If
End If
m_PreviousMouseEventArgs = e
End Sub
Protected Overridable Sub Picturebox2_DragOver( _
ByVal sender As System.Object, ByVal e As DragEventArgs) Handles PictureBox2.DragOver
'3) Beim Ziehen übers Target wird dessen _DragOver-Event gefeuert, darin ist der Allowed-Effekt
'! des Drag-Vorgangs festzulegen (move?, copy?)
If Not e.Data.GetDataPresent("DragSource") Then Return 'Dragging wurde nicht von
'! PictureBox1_MouseMove gestartet
'In der folgenden Tabelle sind die Bits aufgeführt, die für ein angegebenes Ereignis festgelegt
'! werden.
' Bit(Taste)
'1 Die linke Maustaste.
'2 Die rechte Maustaste.
'4 Die UMSCHALTTASTE.
'8 Die STRG-TASTE.
'16 Die mittlere Maustaste.
'32 Die ALT-Taste.
Dim Allowed As DragDropEffects = e.AllowedEffect
Select Case e.KeyState
Case 1
e.Effect = DragDropEffects.Move And Allowed
'Case 1 + 8
' e.Effect = DragDropEffects.Copy And Allowed
'Case 1 + 4 + 8, 1 + 32
' e.Effect = DragDropEffects.Link And Allowed
End Select
End Sub
Protected Overridable Sub Picturebox2_DragDrop( _
ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) _
Handles PictureBox2.DragDrop
'4) als nächstes erhält es das _DragDrop-Event, da ist das Data-Objekt auszulesen, und
'! entsprechend dem nun erfolgten Drag-Effekt zu verwursten.
Dim ctlSource As PictureBox = DirectCast(e.Data.GetData("DragSource"), PictureBox)
Select Case e.Effect
Case DragDropEffects.Copy
PictureBox2.Image = ctlSource.Image
Case DragDropEffects.Move
With ctlSource
.Left = 0
.Top = 0
.Parent = PictureBox2 'real move!
End With
End Select
End Sub
End Class
danke! | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|