簡體   English   中英

如何在WinForms中禁用TreeView的節點重命名?

[英]How can I disable node renaming for the TreeView in WinForms?

是否可以在單擊樹節點時禁用進入“重命名”模式的選項?
我不想完全禁用重命名,只是不允許通過單擊節點來執行此操作。

我不知道你為什么要改變默認行為,但無論如何這里是一個可能的解決方案來編輯​​LabelEdit設置為true的節點。

除非您的具體操作發生,否則只需捕獲BeforeLabelEdit事件並取消它。 以下代碼為F2鍵按下執行此操作:

        bool _allowNodeRenaming;

        private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            if (!_allowNodeRenaming)
            {
                e.CancelEdit = true;
            }

            _allowNodeRenaming = false;
        }

        private void treeView1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F2)
            {
                _allowNodeRenaming = true;
                treeView1.SelectedNode.BeginEdit();
            }
        }

您必須根據需要打開和關閉LabelEdit屬性:

    private void startLabelEdit() {
        treeView1.LabelEdit = true;
        treeView1.SelectedNode.BeginEdit();
    }

    private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) {
        treeView1.LabelEdit = false;
    }

請注意,這有副作用,LabelEdit屬性是本機Windows控件的樣式標志。 更改它需要完全破壞窗口並從頭開始重新創建它。 當窗口在創建后重繪自身時,最明顯的副作用是小閃爍。 可能還有其他的,我自己也沒有看到任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM