Я пытаюсь скопировать выбранный узел дерева в буфер обмена, чтобы вставить его в блокнот. Вот мой код, но он не работает.
TreeNode selNode = (TreeNode)this.treeView1.SelectedNode; Clipboard.SetData("TreeNode", selNode);
Блокнот ничего не знает о классе Winforms TreeNode.Вместо этого используйте Clipboard.SetText ():
private void treeView1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData == (Keys.Control | Keys.C)) { if (treeView1.SelectedNode != null) { Clipboard.SetText(treeView1.SelectedNode.Text); } e.SuppressKeyPress = true; } }
XAML:
<TreeView> <TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}"> <EventSetter Event="Loaded" Handler="ItemLoaded"/> </Style > </TreeView.ItemContainerStyle> </TreeView>
C #:
protected void ItemLoaded(object sender, EventArgs e) { if (sender is TreeViewItem) { TreeViewItem item = sender as TreeViewItem; if (item.CommandBindings.Count == 0) { CommandBinding copyCmdBinding = new CommandBinding(); copyCmdBinding.Command = ApplicationCommands.Copy; copyCmdBinding.Executed += CopyCmdBinding_Executed; copyCmdBinding.CanExecute += CopyCmdBinding_CanExecute; item.CommandBindings.Add(copyCmdBinding); } } private void CopyCmdBinding_Executed(object sender, ExecutedRoutedEventArgs e) { if (sender is TreeViewItem) if ((sender as TreeViewItem).Header is MyClass) Clipboard.SetText(((sender as TreeViewItem).Header as MyClass).MyValue); } private void CopyCmdBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = false; if (sender is TreeViewItem) if ((sender as TreeViewItem).Header is MyClass) e.CanExecute = true; }
Если вы хотите, чтобы другие программы распознавали содержимое буфера обмена, вам необходимо использовать строковый параметр распознанного формата данных (например, простой текст или растровое изображение) и отформатировать узел дерева в этом формате (например, если вы выбираете текст,Вы должны передать «строку» в качестве данных буфера обмена, возможно, значение TreeNode.Text).См. System.Windows.Forms.DataFormats для различных предопределенных типов.