2012-07-26 111 views
-1

我有一个WPF-Datagrid,我可以放置一个元素。这是一个Textelement.txt文件(例如用记事本++打开)中删除。是否有可能在我的Drop事件中获取有关.txt文件的信息?获取拖放的SOURCE

编辑:

void OnDragDrop(object sender, DragEventArgs e) 
{ 
    String text = e.Data.GetData(DataFormats.Text, true); 
} 

在这里,我可以让我的一滴元素的文本,但我发现没有办法获取源文件,这是拖动上手。

+0

[你有什么尝试?](http://whathaveyoutried.com)显示一些研究工作! – GameScripting 2012-07-26 14:47:59

+0

我没有直接尝试过,因为我不知道解决它。DragEventArgs只提供有关我的丢失控件的信息,而不是数据的来源。 – Kooki 2012-07-26 15:14:30

+0

看看文档吧http://msdn.microsoft.com/en-us/library/ms742859.aspx – GameScripting 2012-07-26 15:21:52

回答

0

确定在这里你去:

你必须做三两件事,使在WPF drag'n下降:

  1. 告诉元素来支持drag'n下降
  2. 设置一个DragOver事件
  3. 设置一个Drop事件

OK,让我们先来看看XAML:

<DataGrid AllowDrop="True" 
      DragOver="DataGrid_DragOver" 
      Drop="DataGrid_Drop"/> 

且事件处理代码:

private void DataGrid_DragOver(object sender, DragEventArgs e) 
{ 
    // check if the element dragged over is one or more files 
    if (e.Data.GetDataPresent(DataFormats.FileDrop)) 
    { 
     // if so, show a link cursor 
     e.Effects = DragDropEffects.Link; 
    } 
    else 
    { 
     // otherwise show a "block" cursor 
     e.Effects = DragDropEffects.None; 
    } 

    // IMPORTANT: mark the event as "handled by us", to apply the drag effects 
    e.Handled = true; 
} 

private void DataGrid_Drop(object sender, DragEventArgs e) 
{ 
    // Check if the data dropped is one or more files 
    if (e.Data.GetDataPresent(DataFormats.FileDrop)) 
    { 
     // get the file pathes from the data object 
     string[] filePaths = (e.Data.GetData(DataFormats.FileDrop) as string[]); 

     // do something with the pathes 
     /* ... */ 
    } 
} 

欲了解更多信息,请参阅MSDN documentation

+0

谢谢4帮助,但这不是我的问题。我知道如何删除文件等,但我只会从文件中删除文本,所以没有DataFormats.FileDrop,只有DataFormat.Text.No我想要找到文件,我从中取出文本并将其放入我的应用程序 – Kooki 2012-07-27 13:43:11

+0

如果您从Notepad ++等应用程序中拖放文本,这是不可能的,因为应用程序(Notepad ++)仅将实际数据包含在拖放操作中。你可以通过调用'e.Data.GetFormats()'来获得包含在动作中的所有信息,然后使用'e.Data.GetData(currentDataFormat)'获取当前格式的信息。 – GameScripting 2012-07-27 13:53:06

+0

非常感谢您的帮助。如果有人知道如何解决,请写下;-) – Kooki 2012-07-29 10:42:35

0

思考掉落相同的方式 剪切&粘贴将&

- 通常只有“数据”被活动期间拖过,以及有关它的源没有额外的元数据。

对此的一个例外是从网页中拖动文本时。 DataFormats.Html将包含文本来自的SourceURL。