单击树节点时是否可以禁用进入“重命名”模式的选项?
我不想完全禁用重命名,只是不允许通过单击节点来执行此操作。
答案 0 :(得分:6)
我不知道你为什么会改变默认行为,但无论如何这里是一个可能的解决方案来编辑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();
}
}
答案 1 :(得分:4)
您必须根据需要打开和关闭LabelEdit属性:
private void startLabelEdit() {
treeView1.LabelEdit = true;
treeView1.SelectedNode.BeginEdit();
}
private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) {
treeView1.LabelEdit = false;
}
请注意,这有副作用,LabelEdit属性是本机Windows控件的样式标志。更改它需要完全破坏窗口并从头开始重新创建它。当窗口在创建后重绘自身时,最明显的副作用是小闪烁。可能还有其他的,我自己没有看到任何问题。