private void tree_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { SettingsNode setting = e.Node.Tag as SettingsNode; if (setting == null || !setting.IsAValue) { return; } try { object value = SettingsConverter.ConvertValue(e.Label, setting.Type); } catch (Exception ex) { Logging.Log.Error("Settings", "{0} cannot be applied to '{1}'. {2}", e.Label, setting.Parent.FullPath, ex.Message); toolTipError.Show(String.Format("Restored original value.", e.Label), treeView, e.Node.Bounds.Right + 10, e.Node.Bounds.Top - 5, 2000); e.CancelEdit = true; return; } IsDirty = (setting.Name != e.Label) || TreeNodesDirty(treeView.Nodes, e.Node); }