按钮的拖拽复制

中古系统中,有一个“保存布局”页面,用VB.NET做;设计的技术有:按钮的拖拽复制,动态生成表格,动态生成按钮,布局的保存主要是这些,大家是不是觉的很简单!昨天对自己这段时间的学习进行了回顾,又重新整理了一下代码。当我写这篇博客的时候突然感觉,这些真的挺简单啊!  但实际我做的时候,但远远不止这些。  

通过做这一块内容,我深深的感觉到自己知识积累的匮乏,学习没有章法,尽管很简单的问题,而自己仍然是处处碰壁。自身的这些问题,还有很多,在努力改正中。


现在和大家分享一下,“拖拽复制功能”的实现,如有问题,请指正。

这里涉及到三个事件:

MouseDown事件:当鼠标指针在组件上方并按下鼠标按钮时发生。

DragDrop事件:拖放操作完成时发生

DragEnter事件:拖动首次进入某控件(Panel1)边界时就开始触发该事件。 


 具体代码如下(代码只摘录有拖拽复制部分。):

 '按下按钮时的产生的效果
    Private Sub Button1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
        '左键的话,标志位为true(表示拖拽开始)
        If (e.Button = Windows.Forms.MouseButtons.Left) Then
            Button1.DoDragDrop(Button1, DragDropEffects.Copy Or DragDropEffects.Move)   '形成拖拽效果,移动+拷贝的组合效果
        End If
    End Sub
 
 
 '当Button被拖拽到WinForm上时候,鼠标效果出现
    Private Sub Form2_DragEnter(sender As Object, e As DragEventArgs) Handles Button1.DragEnter, GroupBox1.DragEnter, Panel1.DragEnter, MyBase.DragEnter
               If (e.Data.GetDataPresent(GetType(Button))) Then
            e.Effect = DragDropEffects.Copy
        End If
    End Sub
 
 
    '拖拽释放后,在矩形框动态生成按钮
    Private Sub Panel1_DragDrop(sender As Object, e As DragEventArgs) Handles Panel1.DragDrop
 
        '计算鼠标在panel中的相对位置
        Dim p As Point = New Point(0, 0)
        p.X = e.X - CType(sender, Panel).Left - 4
        p.Y = e.Y - CType(sender, Panel).Top - 15
 
        '拖放完毕之后,自动生成新按钮
        Dim btn = New Button
        Panel1.Controls.Add(btn)
        'btn.Tag = rs.Name.Substring(5, 2) '从第6个字符起,取两个字符,“shape01”取出“01”
      
        btn.Size = New Size(rs.Size.Width + 1, rs.Size.Height + 1)
        btn.Location = rs.Location
        btn.BackgroundImage = Button1.BackgroundImage
 
       End Sub


效果图:

             

当时搜集资料,写代码的时候,各种乱,当我静下心来写这篇博客的时候,才知道这个功能只用了三个事件就ok.   我想这就是总结或是颗粒归藏的功效吧。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值