在WPF中的实现和WinForm中的实现99%相似,将要实现接受拖拽释放的控件添加DragEnter事件和Drop事件,本例中控件Grid
grid作为接受控件,添加事件 *** 作如下:
private void grid_Drop(object 差哗sender, DragEventArgs e){
string
fileName =
((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString()
纯竖//获得文件名后的 *** 作...
}
private void grid_DragEnter(object sender, DragEventArgs e)
{
if
(e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effects 虚裤行=
DragDropEffects.Link
//WinForm中为e.Effect =
DragDropEffects.Link
else
e.Effects =
DragDropEffects.None
//WinFrom中为e.Effect =
DragDropEffects.None
}
C#或者wpf写的程序实启蚂现拖拽关键步骤在于:拖出来程序中的图片和鼠标松下时让悄携埋其他程序进行接受(这一点类似于在windows窗口中拖拽文件到程序图标上,让程序打开),我已经编译好隐歼一个程序,请留下邮箱发送给你.
想实现这样一个常用功能:在ListBox的一个Item上点住左键,然后拖拽到另外一个控件(如ListView中),松开左键,数据已戚没耐经拖拽过来。步骤如下:
1. 设置ListBox 的AllowDrop属性为True
2. 在ListBoxItem 的Style中设置EventSetter
<Style x:Key="MyListBoxItemStyle" TargetType="{x:Type ListBoxItem}">察衫
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_PreviewMouseLeftButtonDown"/>
</Style>
3. 实现ListBoxItem_PreviewMouseLeftButtonDown
private void ListBoxItem_PreviewMouseLeftButtonDown(object sender, MouseEventArgs e)
{
ListBoxItem item = (sender as Control) as ListBoxItem
if (item != null )
{
DataObject dataObject = new DataObject(item.DataContext)
DragDrop.DoDragDrop(item, dataObject, DragDropEffects.Copy)//启动拖拽
}
}
4. 在目的控件也将AllowDrop的属性设为True,高春然后实现目的控件的Drop Event
private void ***Control_Drop(object sender, DragEventArgs e)
{
// 注册Drop事件用来接收数据。
IDataObject data = new DataObject()
data = e.Data
object obj = data.GetData(typeof(YourDataContext))
if (obj != null)
{
Do your job
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)