编码在网页上拖放图像

时间:2015-01-13 18:56:23

标签: vb.net

大约一个月前,我从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

1 个答案:

答案 0 :(得分:1)

Web应用程序不是桌面应用程序,它是一个完全不同的技术堆栈。

这种情况下的代码隐藏完全在服务器端运行,无法实时与用户界面进行交互。您希望在 JavaScript 中实现此功能。

幸运的是,像拖放功能这样的东西已广泛使用插件来提供帮助。例如,查看jQuery UI plugins。或interact.js。 (请参阅他们网站上的演示,了解您正在寻找的功能。)或者甚至只是the MDN documentation

它不会像复制和粘贴代码那么简单。但是,有很多资源可以在网上找到,以帮助您实现功能。