大家好我已经写了一个代码来重命名树视图的节点。在编辑时,如果我删除所有文本并点击输入它将被重命名,但如果用户输入一些带有extensioin .txt的文本,那么我只想重命名该名称。
我调试了我的解决方案,删除了所有文本“”,这样就不会检查条件如果将其保留为我指定的错误信息该怎么办
这是我的代码
// Contextmenu
private void renameToolStripMenuItem_Click(object sender, EventArgs e)
{
string strOld = treeViewACH.SelectedNode.ToString();
treeViewACH.SelectedNode.BeginEdit();
}
//显示所选节点上的上下文菜单
private void treeViewACH_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (treeViewACH.SelectedNode.Parent != null)
{
string strSwitch = treeViewACH.SelectedNode.Parent.Text;
switch (strSwitch)
{
case "FileHeader":
//string strOld = treeViewACH.SelectedNode.Text.ToString();
contextMenuStrip1.Show(treeViewACH, e.Location);
break;
}
}
else
{
// MessageBox.Show("Left clicked");
}
}
}
//重命名
private void treeViewACH_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
if (e.Label.IndexOfAny(new char[]{'\\',
'/', ':', '*', '?', '"', '<', '>', '|'}) != -1)
{
MessageBox.Show("Invalid tree node label.\n" +
"The tree node label must not contain " +
"following characters:\n \\ / : * ? \" < > |",
"Label Edit Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
e.CancelEdit = true;
return;
}
}
答案 0 :(得分:1)
从我可以告诉您的问题,您正在努力使用户只能将树节点的文本更改为以“.txt”结尾的字符串值。假设您正在尝试这样做,可以将AfterLabelEdit逻辑更改为:
private void treeViewACH_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
if (!e.Label.EndsWith(".txt"))
{
MessageBox.Show("Invalid tree node label.\n" +
"The tree node label must end with " +
"the extension: .txt",
"Label Edit Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
e.CancelEdit = true;
return;
}
}
答案 1 :(得分:0)
你应该通过细节来摆脱这个问题 http://www.codeproject.com/KB/tree/CustomizedLabelEdit.aspx