【问题标题】: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
并使其仅在拖动时可见