Я заметил что-то в VS / C#, что для меня немного серое? надеялся, что кто-нибудь сможет объяснить. Я следовал инструкциям в Интернете, чтобы настроить Treeview Control, скопировал и вставил код, в котором говорится, что он обрабатывает метку, и прошел через определенные проверки, как вы увидите ниже, однако желаемого результата здесь не совсем.
Что происходит: кажется, что код проверяет только редактирование, а не метку? потому что, если метка не изменилась, я начинаю видеть, что появляются сообщения, даже если значение не равно нулю, длина> 0 и НЕ содержит специальных символов ... что заставляет меня поверить, что он проверяет только новый значение?
private void TreeSlabs_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
if (e.Label != null)
{
if (e.Label.Length > 0)
{
if (e.Label.IndexOfAny(new char[] { '@', '.', ',', '!' }) == -1)
{
// Stop editing without canceling the label change.
e.Node.EndEdit(false);
}
else
{
/* Cancel the label edit action, inform the user, and
place the node in edit mode again. */
e.CancelEdit = true;
MessageBox.Show("Invalid tree node label.\n" +
"The invalid characters are: '@','.', ',', '!'",
"Node Label Edit");
e.Node.BeginEdit();
}
}
}
else
{
/* Cancel the label edit action, inform the user, and
place the node in edit mode again. */
e.CancelEdit = true;
MessageBox.Show("Invalid tree node label.\nThe label cannot be blank",
"Node Label Edit");
e.Node.BeginEdit();
}
}
Может ли кто-нибудь проверить мою теорию?
Что может быть лучше в этом коде для проверки значения? я знаю, что значения, входящие в дерево, "проверяются" в соответствии с вышеуказанными условиями ... так что на самом деле, если метка не изменилась, она все равно должна разрешить редактирование, но это не будет ...?
Любой совет , как всегда высоко ценится.
Большое спасибо заранее SO сообщества.
Джек