大约一个月前,我从Idle_Mind获得了一些很好的帮助,开发了一个基本的桌面应用程序,孩子们可以拖动它们。以正确的顺序放下图像(图片框)。我已经显示了Idle_Mind在下面提供的代码。它工作得很漂亮,并且很受学生欢迎。
现在,我正在尝试在网站上重新创建应用程序。我正在使用Visual Web Developer 2008 Express。在“Code Behind”中使用相同的代码会产生许多错误。看起来图像控件没有相同的拖放属性。
我是否应该尝试在“后面的代码”中从Visual Basic创建这些拖放行为,或者我应该尝试使用html完成此操作? Visual Web Developer使用Visual Basic.net和XHTML 1.0 Transitional(我相信)
一如既往,谢谢!
Public Class Form1
Private Source As PictureBox = Nothing
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each PB As PictureBox In Me.Controls.OfType(Of PictureBox)()
PB.AllowDrop = True
AddHandler PB.MouseMove, AddressOf PBs_MouseMove
AddHandler PB.DragEnter, AddressOf PBs_DragEnter
AddHandler PB.DragDrop, AddressOf PBs_DragDrop
AddHandler PB.DragOver, AddressOf PBs_DragOver
Next
End Sub
Private Sub PBs_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
Dim PB As PictureBox = DirectCast(sender, PictureBox)
If Not IsNothing(PB.Image) AndAlso e.Button = Windows.Forms.MouseButtons.Left Then
Source = PB
PB.DoDragDrop(PB.Image, DragDropEffects.Copy Or DragDropEffects.Move)
End If
End Sub
Private Sub PBs_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
If e.Data.GetDataPresent(DataFormats.Bitmap) Then
If My.Computer.Keyboard.CtrlKeyDown Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.Move
End If
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub PBs_DragOver(sender As Object, e As DragEventArgs)
If e.Data.GetDataPresent(DataFormats.Bitmap) Then
If My.Computer.Keyboard.CtrlKeyDown Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.Move
End If
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub PBs_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
Dim PB As PictureBox = DirectCast(sender, PictureBox)
PB.Image = e.Data.GetData(DataFormats.Bitmap)
If e.Effect = DragDropEffects.Move Then
If Not (PB Is Source) Then
Source.Image = Nothing
End If
End If
End Sub
End Class
答案 0 :(得分:1)
Web应用程序不是桌面应用程序,它是一个完全不同的技术堆栈。
这种情况下的代码隐藏完全在服务器端运行,无法实时与用户界面进行交互。您希望在 JavaScript 中实现此功能。
幸运的是,像拖放功能这样的东西已广泛使用插件来提供帮助。例如,查看jQuery UI plugins。或interact.js。 (请参阅他们网站上的演示,了解您正在寻找的功能。)或者甚至只是the MDN documentation。
它不会像复制和粘贴代码那么简单。但是,有很多资源可以在网上找到,以帮助您实现功能。