[英]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.