当拖动的对象位于允许的放置区域时,如何显示文本/提示?
除了如下所示显示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
答案 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
并仅在拖动时使其可见