【问题标题】:Show hint text with drag-and-drop (WPF)通过拖放显示提示文本 (WPF)
【发布时间】:2013-12-02 03:06:28
【问题描述】:

当拖动的对象在允许的放置区域时如何显示文本/提示?

除了显示如下所示的 DragDropEffect 之外,我还想显示一个小提示文本,例如“将项目拖放到此处以将其添加到列表”。

Private Sub grid_DragEnter(sender As System.Object, e As System.Windows.DragEventArgs)
    If e.Data.GetDataPresent(GetType(List(Of myObject))) Then
        e.Effects = DragDropEffects.Move
    Else
        e.Effects = DragDropEffects.None
    End If
End Sub

【问题讨论】:

    标签: .net wpf vb.net drag-and-drop hint


    【解决方案1】:

    我想我知道您在追求什么,但就现有信息的范围而言,很难提供比以下更多的信息。只需将标签添加到表单设置其visibility = hidden 然后当拖动的项目通过检查有效项目放置时,更改标签visibility = Visible 当鼠标离开放置区域或释放按钮时总是重置标签visibility = hidden... 实现此目的的另一种方法是获取指针位置并将标签 x,y 位置设置为可见性 = 可见时的位置。

    【讨论】:

      【解决方案2】:

      查看此link(使用拖放移动 WPF DataGrid 行)。我知道它是 C#,但想法就在那里。

      他挂接到 OnMouseLeftButtonDown 开始拖动操作。您可以添加设置一个放置目标提示可见(或其他一些视觉指示器)并在他重置 DragDrop 时将其隐藏在 OnMouseLeftButtonUp 事件中。

      对不起,我原来的答案偏离了目标。

      【讨论】:

        【解决方案3】:

        我已经在我自己的一个程序中做到了这一点。我这样做的方式是在设计器中有一个带有InfoLabel.Visible = False 的标签,然后我在其上运行以下代码:

        Private Sub DrgEnter(Sender As System.Object, DragArgs As System.Windows.Forms.DragEventArgs) Handles ListViewQA.DragEnter
            InfoLabel.Text = "Hint Text Here"
            InfoLabel.Location = New System.Drawing.Point(MousePosition.X - (Me.Location.X - 3), MousePosition.Y - (Me.Location.Y + 32))
            InfoLabel.Show()
        End Sub
        
        Private Sub MoveLabel() Handles ListViewQA.DragOver
            InfoLabel.Location = New System.Drawing.Point(MousePosition.X - (Me.Location.X - 3), MousePosition.Y - (Me.Location.Y + 32))
        End Sub
        
        Private Sub HideInfoLabel() Handles ListViewQA.DragLeave, InfoLabel.MouseMove
            InfoLabel.Visible = False
        End Sub
        
        Private Sub DragDropAdd(Sender As System.Object, DropArgs As System.Windows.Forms.DragEventArgs) Handles ListViewQA.DragDrop
            InfoLabel.Visible = False
            'Put Drop Handling code here
        End Sub
        

        希望这会有所帮助,如果您需要,我可以为您提供更多与此相关的代码!

        【讨论】:

          【解决方案4】:

          尝试使用鼠标输入事件并使其检查鼠标拖动,从那里您应该能够创建一个标签并使用此代码使其跟随鼠标

          dim point as new point 
          point.x = windows.forms.cursor.position.x
          point.y = windows.forms.cursor.position.y
          

          并使其仅在拖动时可见

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-05-19
            • 2011-07-20
            • 1970-01-01
            • 1970-01-01
            • 2018-05-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多