使用拖放(WPF)显示提示文本

时间:2013-11-18 20:01:26

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

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

除了如下所示显示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

4 个答案:

答案 0 :(得分:0)

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

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

抱歉,我的原始答案不合适。

答案 1 :(得分:0)

我想我知道你的目标是什么,但是根据可获得的信息,很难给出比下面更多的信息。只需在表单集visibility = hidden中添加一个标签然后当拖动的项目通过检查有效项目时,当鼠标离开放置区域或释放按钮时,更改标签visibility = Visible始终重置标签visibility = hidden ...实现此目的的另一种方法是获取指针位置并将标签x,y位置设置为当visibility = visible时的位置。

答案 2 :(得分:0)

我在我自己的一个程序中完成了这个。我这样做的方式是我在设计器中有一个带有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

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

答案 3 :(得分:0)

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

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

并仅在拖动时使其可见