2014-09-30 87 views
0

我有一个自我创建的日历程序,我遇到了问题。我添加了一个选择范围选项,它依靠一个拖动事件来选择一个范围。放在运行时创建的控件

如果我在设计器中创建两个标签,我可以将数据从一个拖到另一个,没有任何问题。我遇到的问题是我无法拖到我在运行时创建的控件上。我可以从一个拖动,但不能拖动到一个。

Private Sub SetupMonths() 
    Dim dayNo As Integer 

    For monthNo As Integer = 0 To 11 
     grpMonth(monthNo) = New GroupBox 
     grpMonth(monthNo).Text = MonthName(monthNo + 1) 
     Me.pnlCalendar.Controls.Add(grpMonth(monthNo)) 
     For dayY = 0 To 4 
      For dayX = 0 To 6 
       dayNo = dayX + dayY * 7 
       lblDay(monthNo, dayNo) = New Label 
       lblDay(monthNo, dayNo).Font = Me.lblDayFont.Font 
       lblDay(monthNo, dayNo).Text = dayNo 
       lblDay(monthNo, dayNo).BorderStyle = BorderStyle.FixedSingle 
       grpMonth(monthNo).Controls.Add(lblDay(monthNo, dayNo)) 

       AddHandler lblDay(monthNo, dayNo).MouseDown, AddressOf DayDrag 
       AddHandler lblDay(monthNo, dayNo).DragOver, AddressOf DayOver 
       AddHandler lblDay(monthNo, dayNo).DragDrop, AddressOf DayDrop 

      Next 
     Next 
    Next 
End Sub 


Private Sub DayDrag(ByVal sender As Label, ByVal e As System.Windows.Forms.MouseEventArgs) 
    Debug.WriteLine("Start draging " & dayDragFrom) 
    sender.DoDragDrop(sender.Tag, DragDropEffects.Copy) 
    Debug.WriteLine("End") 
End Sub 
Private Sub DayOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) 
    Debug.WriteLine("Over") 
    If (e.Data.GetDataPresent(DataFormats.Text)) Then 
     e.Effect = DragDropEffects.Copy 
    Else 
     e.Effect = DragDropEffects.None 
    End If 
End Sub 
Private Sub DayDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) 
    Debug.WriteLine("Drop") 
    ' More code will go here 
End Sub 

“DayDrag”处理程序正在添加罚款,并触发正常。我可以将其中的一个拖放到设计器中创建的控件中。然而,“白天”和“白天”操作员似乎没有附加,因此我不能拖到他们身上。

对任何暗示打开,

很多谢谢。

Mat。

回答

1

这可能是更好的评论,但我没有足够的代表。

您是否尝试将AllowDrop属性设置为True?

lblDay(monthNo, dayNo) = New Label 
lblDay(monthNo, dayNo).AllowDrop = True 
... 

它标志控制是否可以接受拖放到它的数据,所以如果它是假的,这可能是为什么你的鼠标处理工作,但你拖动处理程序没有。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.allowdrop%28v=vs.110%29.aspx

http://msdn.microsoft.com/en-us/library/aa984430%28v=vs.71%29.aspx