获得拖累和下降的优势

时间:2012-07-26 14:41:22

标签: c# wpf events drag-and-drop

我有WPF-Datagrid我可以放弃一个元素。这是从 .txt 文件中删除的 Textelement (例如,使用notepad ++打开)。有没有可能在Drop-Event上获取有关.txt文件的信息?

修改

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

这里我可以获取我的drop元素的Text,但是我找不到获取源文件的解决方案,拖动开始的地方。

2 个答案:

答案 0 :(得分:0)

好的,你去吧:

你必须做三件事才能在WPF中实现拖放:

  1. 告诉元素支持drag'n drop
  2. 设置DragOver活动
  3. 设置Drop活动
  4. 好的,我们先来看看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

答案 1 :(得分:0)

没有

想想拖动&amp;以 Cut&amp;粘贴 - 通常只有&#34;数据&#34;在活动期间被拖延,没有关于其来源的其他元数据。

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