#695 – 实现一个简单的拖拽(Implementing Drag-and-Drop Behavior)
来源:互联网 发布:mac 录音专业版 编辑:程序博客网 时间:2024/06/05 01:06
下面例子中的代码实现了从一个TextBox 中拖拽文字到一个ListBox 里。
在XAML中,我们指定TextBox 的MouseDown 事件处理韩式和ListBox 的Drop 事件处理函数。并且要设置ListBox 的AllowDrop 属性为true(表示允许接收拖拽的输入).
<StackPanel Orientation="Vertical" Grid.Column="0" Margin="10"> <Label Content="Enter some text and then drag to list"/> <TextBox Text="" MouseDown="txtMouseDown"/></StackPanel><ListBox Grid.Column="1" Margin="10" AllowDrop="True" Drop="lbDrop"/>
在TextBox 的MouseDown 事件处理函数中,我们执行DragDrop.DoDragDrop 静态方法(可以理解为将要拖动的数据进行“装车”,等待出发)。
private void txtMouseDown(object sender, MouseButtonEventArgs e){ TextBox txtElement = e.Source as TextBox; DragDrop.DoDragDrop(txtElement, txtElement.SelectedText, DragDropEffects.Copy);}
在ListBox 的Drop 事件处理函数中我们对拖拽接收到的数据进行处理,添加到列表中去。
private void lbDrop(object sender, DragEventArgs e){ string draggedText = (string)e.Data.GetData(DataFormats.StringFormat); // 设置接受的数据类型为文本 ListBox lbox = e.Source as ListBox; lbox.Items.Add(draggedText);}
我们设置了某个控件的AllowDrop 属性为true以后,这个控件就可以接受各种拖拽过来的数据,但是并不是所有的数据它都想接受,因此我们可以通过调用IDataObject.GetData 方法来指定要接收的目标数据类型。比如在上面的例子中设置接受的数据类型为文本。
在我们调用了DragDrop.DoDragDrop 函数,指定了要进行拖传递的数据后,这些数据不仅可以在当前应用程序内传递,还可以传递给其他的应用程序。例如将你的文本,图片之类的数据传递给Word文档。
********************************************译者注*****************************************
DragDrop.DoDragDrop 是一个阻塞函数,如果整个拖拽动作(拖动目标->移动->放开)没有完成,它是不会返回的,会阻塞后面的函数。
在拖拽事件中如果想获取鼠标当前的坐标应该使用DragEventArgs的GetPosition函数,Mouse.GetPosition 在拖拽的时候无法获取到鼠标位置。
0 0
- #695 – 实现一个简单的拖拽(Implementing Drag-and-Drop Behavior)
- 分享一个HTML5的drag and drop API实现的图片拖拽分组效果
- 分享一个HTML5的drag and drop API实现的图片拖拽分组效果
- EasyUI-treegrid-拖拽的实现(drag and drop)
- VC实现文件管理器拖拽(Drag-and-Drop)
- VC实现文件管理器拖拽(Drag-and-Drop)
- Android SDK: Implementing Drag-and-Drop Functionality
- 简单Drag and Drop事件实现
- SWT 应用程序 实现的Drag and Drop(DND) 和 GEF 树上元素的拖拽
- 在.NET中实现窗体控件的内容拖拽效果(Drag-and-Drop)
- Unity3D-UGUI-drag and drop实现拖拽放下功能
- QT简单DRAG AND DROP
- 组件的拖拽功能(Drag and Drop)
- [SWT] 拖和拽(Drag and Drop)
- Eclipse 拖拽功能(Drag and Drop)
- 让你的控件也具有拖拽(drag-and-drop)功能
- 让你的控件也具有拖拽(drag-and-drop)功能
- 让你的控件也具有拖拽(drag-and-drop)功能
- [java]百度API简单操作
- @OneToMany或@ManyToOne的用法-annotation关系映射篇
- 学习资料汇总(持续更新)
- Spring--IoC--从applicationContext容器中获取对象
- android 为什么不建议使用Enum
- #695 – 实现一个简单的拖拽(Implementing Drag-and-Drop Behavior)
- 每天一个Linux命令(49):ifconfig
- 一张图了解:sass
- Distributed tensorflow实现原理
- SOA微服务案例-基于springmvc+mybaties+dubbo+mq+gradle
- OpenGLES的简单应用绘图,以及照相机画面变色变形渲染(三)
- 你在执行composer self-update更新命令的时候可能会遇到错误:
- unicode,ansi,utf-8编码的区别--浅谈计算机编码发展史
- 关于FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream的一次解决过