C# 在拖动过程中获取treeviewitem&;两个TreeView之间的删除操作
我正在两个TreeView之间执行拖放操作。 在目标treeview(Drop treeview)中,使用系统中的驱动器和文件填充此treeview。 如何在目标树视图中获取要将拖动的项拖放到的树视图项? 我在目标树视图的删除事件中使用以下代码C# 在拖动过程中获取treeviewitem&;两个TreeView之间的删除操作,c#,.net,wpf,treeview,C#,.net,Wpf,Treeview,我正在两个TreeView之间执行拖放操作。 在目标treeview(Drop treeview)中,使用系统中的驱动器和文件填充此treeview。 如何在目标树视图中获取要将拖动的项拖放到的树视图项? 我在目标树视图的删除事件中使用以下代码 private void TargetTreeview_Drop(object sender, DragEventArgs e) { Node item = e.Data.GetData(typeof(Node)) as
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;
}
}
}
在上面的代码中,我无法将对象“data”转换为treeviewitem。
如果我将“data”转换为treeviewitem,则表示它为“null”
任何人都可以帮助我获取我要将拖动的项拖放到的目标treeview项。我将分别执行此操作,首先在第一个treeview中,我将有一个Click或MouseCliCk事件处理程序,并将单击的项保存在全局变量中
TreeNode tn = null;
treeView1.Click += (s,e)=>{
tn=e.Node;
};
在第二个树状视图中,我会在drop事件中看到类似的内容(不知道drop事件的正确语法,但你会明白的)
希望很清楚尝试将发送者对象强制转换为树视图,然后使用树视图的SelectedItem。如果它是一个TreeViewItem,那么将其作为一个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();
}
Hai Vajura在wpf中没有TreeNode类。TreeNode类存在于Winforms中。我在wpf 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();
}