C# TreeView节点编辑的问题
TreeView节点编辑的时候,要判断修改后的值是否跟选中节点的值重复。如果重复,则恢复为原来的值。我的代码如下,但是在值重复之后没有变回原来的值。求大神指点。是不是在执行AfterLabelEdit之后又执行了其它事件?并且我发现在AfterLabelEdit之后Viewresult.SelectedNode也改变了,变为下面的一个节点。
private void Viewresult_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)//此事件未被调用//2014.7.22修改
{
int index = 0;
index = Viewresult.SelectedNode.Index;
Dictionary<string, string[]> dt = new Dictionary<string, string[]>();
dt.Add("AIRSYS2",new string[2] {"AIRSYS2_FILE_INFORMATION","FILE_NAME"});
dt.Add("AIRSYS3", new string[2] { "AIRSYS3_FILE_INFORMATION", "FILE_NAME" });
dt.Add("AIRSYS4", new string[2] { "AIRSYS4_FILE_INFORMATION", "FILE_NAME" });
dt.Add("FLOWNET", new string[2] {"NETWORK_DETAIL","NETWORK_NAME"});
//string oldValue = e.Node.Text;
//保证同一级下不重名
List<string> l = new List<string>();
l.Clear();
foreach (TreeNode tn in Viewresult.SelectedNode.Parent.Nodes)
{
if (!l.Contains(tn.Text))
{
l.Add(tn.Text);
}
}
string newValue = e.Label;
if (e.Label != null)
{
if (newValue.Length != 0)
{
string command = "";
string solverName=GetRootNodeSolver (Viewresult.SelectedNode);
if (dt.ContainsKey(solverName))//
{
if (!l.Contains(newValue))
{
command = "USE " + FrmLogin.databaseName + ";UPDATE "+dt[solverName][0]+" SET "+dt[solverName][1]+"='" + newValue + "' WHERE ID='" + Viewresult.SelectedNode.Tag.ToString() + "' ;";
MysqlOperation.RunCommand(command, FrmLogin.serverIP); ;
UserAdmin.Log.OperationLog.AddOperationLog(GUID.GenerateGUID.ReturnGUID(), FrmLogin.loginUserDetail.UserID, "7", "重命名网络:由" + oldNodeValue + "到" + newValue, "", Viewresult.SelectedNode.Tag.ToString(), UserAdmin.Log.OperationLog.GetLocalIP());//存储日志,存储重命名过程,目标是网络ID,2014.5.24
//Viewresult.SelectedNode.EndEdit(true);
//Viewresult.LabelEdit = false;
}
else
{
if (newValue != oldNodeValue)
{
MessageBox.Show("命名不能与兄弟节点重名!");
}
//Viewresult.SelectedNode.EndEdit(true);
Viewresult.SelectedNode.Text = oldNodeValue;
//Viewresult.LabelEdit = false;
}
}
}
else
{
Viewresult.SelectedNode.EndEdit(true);
MessageBox.Show("命名长度不能为0!");
//Viewresult.SelectedNode.Text = oldNodeValue;
//Viewresult.LabelEdit = false;
}
}
string text = oldNodeValue;
string tag = Viewresult.SelectedNode.Tag.ToString();
foreach (Form form in MdiChildren)
{
if (form.Text == text && form.Tag.ToString() == tag)
{
form.Text = newValue;
}
}
}