【问题标题】:Treeview save document on node selectionTreeview 保存节点选择的文档
【发布时间】:2016-06-25 06:33:24
【问题描述】:

我的表单上有一个 TextBox 和一个 TreeView,treeview 显示一个包含多个文本文件的目录。选择节点时,文本文档显示在文本框中。我试图在选择不同的节点之前将工作保存在文本框中。我知道我可以使用以下代码获取所选节点的文件路径:

TreeNode CurrentNode = e.Node; string fullpath = CurrentNode.FullPath;

我相信我可以在单击其他节点时使用树视图上的 BeforeSelect 事件来保存它。我只是不知道如何在不打开 saveDialog 的情况下保存文件。

【问题讨论】:

  • 你可以尝试TreeView.AfterSelect事件,但仅在节点为checked时发生,而不是在unchecked时发生。欲了解更多信息AfterSelect Event

标签: c# winforms save treeview


【解决方案1】:

在您的表单中跟踪当前选择的TreeNode 和之前选择的TreeNode

TreeNode _priorNode, _currentNode;

当有人更改TreeView 中的选择时,您要访问的是先前选择的节点的FullPath 以保存更改。当用户更改选择时,AfterSelect 事件会触发。在这种情况下,您可以检查先前选择的节点并将更改保存在TextBox

public partial class Form1 : Form
{
    // form level variables to hold current node and prior node
    TreeNode _priorNode, _currentNode;

    public Form1()
    {
        InitializeComponent();
    }

    // stores the prior node (based on current node) after node select    
    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
        String textToSave;
        String fileName;
        System.IO.StreamWriter writer;

        if (_currentNode != null)
        {
            _priorNode = _currentNode;
        }
        _currentNode = e.Node;
        if (_priorNode != null)
        {
            textToSave = textBox1.Text;
            fileName = _priorNode.FullPath;
            writer = new System.IO.StreamWriter(fileName);
            writer.Write(textToSave);
            writer.Close();
        }
    }
}

【讨论】:

  • 在 if(_currentNode != null) 和 if(_priorNode != null) 下出现未分配变量错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 1970-01-01
相关资源
最近更新 更多