放到在运行时创建的控件上

马修·贝克(Matthew Baker)

我有一个自己创建的日历程序,遇到了问题。我添加了一个选择范围选项,该选项依赖于拖动事件来选择一个范围。

如果在设计器中创建两个标签,则可以毫无问题地将数据从一个拖到另一个。我的问题是我无法拖动到在运行时创建的控件。我可以从一个拖到另一个。

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在SwiftUI中在运行时创建控件

来自分类Dev

在运行时创建控件的 OOP 方式?

来自分类Dev

在运行时移动控件

来自分类Dev

在运行时创建的对象上的双击事件-Delphi

来自分类Dev

尝试访问在VBA(Visio)中在运行时创建的控件的属性时发生运行时错误

来自分类Dev

如何在运行时创建控件并定义其数据绑定

来自分类Dev

保存在运行时创建的C#Winform控件

来自分类Dev

在运行时VB.NET获取多个已创建控件的值

来自分类Dev

C#-在创建新控件的线程仍在运行时关闭表单

来自分类Dev

将事件分配给在运行时动态创建的 VCL 控件

来自分类Dev

Delphi 和高 DPI:在运行时创建的控件获得错误的位置

来自分类Dev

在运行时创建的访问控制

来自分类Dev

DevExpress WebChartControl在运行时创建

来自分类Dev

在运行时快速创建函数

来自分类Dev

在运行时动态创建类

来自分类Dev

在运行时创建Tasklet

来自分类Dev

在运行时创建字段

来自分类Dev

在运行时创建Spock测试

来自分类Dev

在运行时创建Command对象

来自分类Dev

在运行时创建对象?

来自分类Dev

django在运行时创建信号

来自分类Dev

在运行时创建UI元素

来自分类Dev

在运行时创建并填充 ImageList

来自分类Dev

Javascript:在运行时创建函数

来自分类Dev

选择在运行时创建的组件

来自分类Dev

在运行时创建字典

来自分类Dev

运行时创建的控件中的事件

来自分类Dev

如何在运行时基于鼠标移动在窗体上移动所有控件

来自分类Dev

c#在运行时更改标签(控件)的位置