我有一个自己创建的日历程序,遇到了问题。我添加了一个选择范围选项,该选项依赖于拖动事件来选择一个范围。
如果在设计器中创建两个标签,则可以毫无问题地将数据从一个拖到另一个。我的问题是我无法拖动到在运行时创建的控件。我可以从一个拖到另一个。
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”处理程序添加得很好,并且触发正常。我可以将其中之一拖到设计器中创建的控件中。但是,“ Day Over”和“ Day Drop”处理程序似乎没有附加,因此,我无法将其拖到它们上。
可以接受任何建议,
非常感谢。
垫。
作为评论可能会更好,但是我没有足够的代表。
您是否尝试过将AllowDrop属性设置为True?
lblDay(monthNo, dayNo) = New Label
lblDay(monthNo, dayNo).AllowDrop = True
...
它标记控件是否可以接受拖动到其上的数据,因此,如果它为false,则可能是您的鼠标处理程序起作用而拖动处理程序不起作用的原因。
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.control.allowdrop%28v=vs.110%29.aspx
http://msdn.microsoft.com/zh-CN/library/aa984430%28v=vs.71%29.aspx
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句