WPF怎么实现拖拽打开文件

WPF怎么实现拖拽打开文件,第1张

在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

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8199393.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存