2009-09-11 2 views
0

내가 런타임에 PictureBox를 이동을위한이 웹 페이지의 코드를 테스트 : 나는 두 pictureboxex과 양식을 만들어런타임에 그림 상자를 이동하여 다른 그림 상자에 놓을 때 사라지게하려면 어떻게해야합니까?

http://www.davidsuarez.es/2007/11/mover-y-soltar-controles-con-drag-drop-visual-basic/ : PICTURE1 및 Picture2 (페이지 스페인어, 그래서 내가 여기 수정 된 코드를 복사) :

Dim DY As Single 
Dim DX As Single 
Dim Flag_MouseMove As Boolean 

Private Sub CancelarDrag(Source As Control) 
Source.Visible = True 
Source.Drag vbCancel 
End Sub 

Private Sub FinalizarDrag(Source As Control, Button As Integer) 
If Button = vbLeftButton Then 
Source.Visible = True 
Source.ZOrder 
Source.Drag vbEndDrag 
End If 
End Sub 

Private Sub IniciarDrag(Source As Control, Button As Integer, X As Single, Y As Single) 
If Button = vbLeftButton Then 
DX = X 
DY = Y 

Source.Drag vbBeginDrag 
Source.Visible = False 
Source.Drag 
End If 
End Sub 

Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) 
Dim ejeY, ejeX As Single 

ejeX = X - 60 
ejeY = Y - 60 
ejeX = ejeX - DX 
ejeY = ejeY - DY 

Source.Visible = True 
Source.Move ejeX, ejeY 
Source.Drag vbEndDrag 
Source.ZOrder 
End Sub 

Private Sub Picture1_DragDrop(Source As Control, X As Single, Y As Single) 
CancelarDrag Picture1 
End Sub 

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
IniciarDrag Picture1, Button, X, Y 
Flag_MouseMove = True 
End Sub 

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 
FinalizarDrag Picture1, Button 
Flag_MouseMove = False 
End Sub 

Private Sub Picture2_DragDrop(Source As Control, X As Single, Y As Single) 
CancelarDrag Picture2 
End Sub 

Private Sub Picture2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 
IniciarDrag Picture2, Button, X, Y 
Flag_MouseMove = True 
End Sub 

Private Sub Picture2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 
FinalizarDrag Picture2, Button 
Flag_MouseMove = False 
End Sub 

커서가 다른 picturebox의 영역 내에 있고 거기에 내 움직이는 picturebox를 놓는 경우를 제외하고는 코드가 제대로 작동합니다. 움직이는 그림 상자가 사라지고 양식을 다시로드 할 때까지 절대로 돌아 오지 않습니다. 이 "그림 상자 사라짐"을 피하려면 어떻게해야합니까?

답변

0

알았습니다. 문제는 "IniciarDrag"기능입니다. 소스 컨트롤은 항상 볼 수 있어야하며 문제를 해결할 수 있어야합니다 (예 : 컨트롤을 폼 외부에 놓으려는 것처럼!) :

Source.Visible = True 
관련 문제