【问题标题】:Get treeviewitem during drag & drop operation between two treeviews在两个树视图之间进行拖放操作期间获取树视图项
【发布时间】:2015-01-21 09:44:34
【问题描述】:

我正在两个树视图之间进行拖放操作。 在目标树视图(Drop Treeview)中,此树视图使用系统中的驱动器和文件填充。 如何在目标树视图中获取要拖放到的树视图项? 我在目标树视图的放置事件中使用以下代码

    private void TargetTreeview_Drop(object sender, DragEventArgs e)
    {
        Node item = e.Data.GetData(typeof(Node)) as Node;
        e.Effects = DragDropEffects.Copy;
        Point Start = e.GetPosition(TargetTreeview_Drop);
        HitTestResult result = VisualTreeHelper.HitTest(TargetTreeview_Drop, Start);
        if (result != null)
        {
            if (result.VisualHit is FrameworkElement)
            {
                FrameworkElement Target = result.VisualHit as FrameworkElement;
                object data = Target.DataContext;
            }
        }


    }

在上面的代码中,我无法将对象“数据”转换为 treeviewitem。 如果我将“数据”转换为 treeviewitem 意味着它是“空”。

任何人都可以帮助我获取我想要将拖动的项目拖放到的目标树视图项。

【问题讨论】:

    标签: c# .net wpf treeview


    【解决方案1】:

    我会以不同的方式执行此操作,首先在第一个树视图中,我将有一个 Click 或 MouseCliCk 事件处理程序并将单击的事件保存在全局变量中

    TreeNode tn = null;
    treeView1.Click += (s,e)=>{
        tn=e.Node;
    };
    

    在第二个树视图中,我会在 drop 事件中出现类似这样的内容(不知道 drop 事件的正确语法,但你会明白的)

    treeView2.Drop += (s,e) =>{
    
        if(tn!=null){
    
             treeView2.Nodes.Add(tn.Clone());
             //or whatever you want to do
        }
    };
    

    希望清楚

    【讨论】:

    • Hai Vajura wpf 中没有 TreeNode 类。Winforms 中存在 TreeNode 类。我在 wpf TreeViewItem 中询问。
    【解决方案2】:

    尝试将发送者对象转换为 TreeView,然后使用 TreeView 的 SelectedItem。如果它是 TreeViewItem,则将其转换为这样。

        var tree = sender as TreeView;
    
        // ... Determine type of SelectedItem.
        if (tree.SelectedItem is TreeViewItem)
        {
            // ... Handle a TreeViewItem.
            var item = tree.SelectedItem as TreeViewItem;
            this.Title = "Selected header: " + item.Header.ToString();
        }
        else if (tree.SelectedItem is string)
        {
            // ... Handle a string.
            this.Title = "Selected: " + tree.SelectedItem.ToString();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      相关资源
      最近更新 更多