十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
VB6.0写的,代码很简单,无意中写成的。应该可以参考。不需要任何api函数。在无边框窗体顶部中放入一个label标签。然后用label的 mouse down 和mouse move事件实现
成都创新互联是一家专注于网站设计制作、网站建设与策划设计,齐齐哈尔网站建设哪家好?成都创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:齐齐哈尔等地区。齐齐哈尔做网站价格咨询:18980820575
Dim a, b As Single
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
a = X
b = Y
End Sub
Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Form1.Move Left + X - a, Top + Y - b
End If
End Sub
在控件的MouseDown事件中,记录控件的当前位置和鼠标坐标,并设置一个标志变量表示进入拖动状态;在MouseMove事件中,判断如果当前是拖动状态,则根据鼠标的当前坐标和MouseDown时的坐标计算出移动量,更改控件位置;在MouseUp事件中清除标志变量。
很久没有上这里了,今天看到了这个问题,尝试做了一个;
本例以源文本框TextBox1全部文字作为拖放文字为例,实现拖放
1、向一个窗体中添加两个文本框,分别名为TextBox1,TextBox2。注意:把TextBox2控件的AllowDrop属性设置成True,这点不要遗漏。
2、完整的代码如下:
Public Class Form1
Private MouseIsDown As Boolean = False
Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
'设置一个标志以显示鼠标已按下。
MouseIsDown = True
End Sub
Private Sub TextBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseMove
If MouseIsDown Then
'开始拖动(将TextBox1的文本内容作为拖放内容)。
TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy)
End If
MouseIsDown = False
End Sub
Private Sub TextBox2_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox2.DragEnter
'检查正在被拖放的数据的格式。
If (e.Data.GetDataPresent(DataFormats.Text)) Then
'显示复制光标(表示是拖放行为)。
e.Effect = DragDropEffects.Copy
Else
'显示不放置光标(表示不是拖放行为)。
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub TextBox2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox2.DragDrop
'粘贴文本(将拖放内容作为TextBox2的文本内容)。
TextBox2.Text = e.Data.GetData(DataFormats.Text)
End Sub
End Class
我晕。。。
1楼,楼主说的是类似手机桌面,不是说些手机程序(虽然.net确实可以写手机程序(蛋疼。。))
2楼,为啥不直接改变容器的Left。。。。
切入正题,大致思路:
用一个容器,如Panel来盛装所有控件,Panel的MouseMove事件中通过e.Button判断左键按下来实现拖动的效果,然后在计时器中更改Panel的Location。(这样做很简单,但效率非常低)
要流畅的话,就自己写一个容器控件,内部的子控件全部自己绘制(实现一些轻量级的控件类),不过工作量较大
第一步,点击VS工具
请点击输入图片描述
第二步,打开后,新建一个Windows窗体应用程序
请点击输入图片描述
第三步,新建完毕后,如图所示
请点击输入图片描述
第四步,拖动文本框与按钮,如图示
请点击输入图片描述
第五步,将剪贴板复制与粘贴代码输入,如图示
请点击输入图片描述
第六步,运行程序
请点击输入图片描述
7
第七步,点击按钮,成功从剪贴板中复制与粘贴操作
请点击输入图片描述
可以去网上搜一下冻结表头
思路是后台去掉表头 自己添加一个 在同时加载CSS样式