【问题标题】:Getting treenode text after an edit编辑后获取树节点文本
【发布时间】:2012-04-28 14:49:01
【问题描述】:

我有一个树视图,允许用户在其中创建新的树节点。当他们创建树节点时,我会自动进入编辑模式。我要做的是在“AfterLabelEdit”中编辑完成后保存给树节点的名称。

我发现在此方法中检查标签会返回原始标签,因为在方法完成之前它似乎不会提交给树。

编辑完成后如何获得新标签?有没有办法强制在这种方法中提交更改?

希望这是有道理的!

【问题讨论】:

    标签: c# winforms treeview


    【解决方案1】:

    在 AfterLabelEvent 事件完成之前,实际的节点文本不会改变。该事件在 e.Label 属性中传递新的标签文本。这就是你想要的。

    处理棘手的 TreeView 事件的标准技巧是延迟操作,直到事件完成。使用 Control.BeginInvoke() 方法优雅地完成:

        private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) {
            this.BeginInvoke(new Action(() => afterAfterEdit(e.Node)));
        }
        private void afterAfterEdit(TreeNode node) {
            string txt = node.Text;   // Now it is updated
            // etc..
        }
    

    【讨论】:

    • 完美 - 正是我试图让我微弱的头脑。干杯。
    • 太棒了 - 又好又简单。
    【解决方案2】:

    使用 System.Windows.Forms.NodeLabelEditEventArgs 中的 e.Label

    private void treeView1_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e)
    {
        if (e.Label != null)
        {
         ........
        }
    }
    

    http://msdn.microsoft.com/en-us/library/system.windows.forms.nodelabelediteventargs.label.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      相关资源
      最近更新 更多