agent_kruger Ответов: 2

Измените текст узла дерева в treeview c# win. форма


Как ограничивать кто-то из ввод текста в узле дерева. Я хочу проверить после "treeView1_AfterLabelEdit- это если вставленный текст уже сохранен. Если да, то вставленный текст следует изменить на "новый". Как это сделать?

ZurdoDev

Есть много людей, которые могут помочь, но вы должны четко понимать, в чем вам нужна помощь. Где ты застрял?

Нажмите на кнопку улучшить вопрос, добавьте соответствующий код и покажите нам, где вы застряли, чтобы мы могли вам помочь.

agent_kruger

сэр, теперь все в порядке?

ZurdoDev

Лучше. Но это все равно не показывает, где вы застряли. Помогает ли решение 1?

agent_kruger

теперь смотрите вопрос, сэр, это лучшее объяснение, которое я мог бы дать. Пожалуйста, помогите мне, если вы можете понять это.

ZurdoDev

Это не показывает, где вы застряли. Если я правильно вас понял, вам нужно проверить свою БД, чтобы увидеть, выходит ли значение. Если это так, не сохраняйте данные в БД и не меняйте их на новые. Существует много кода, чтобы сделать это, так на какой точке вы застряли?

2 Ответов

Рейтинг:
20

Krunal Rohit

/* Get the tree node under the mouse pointer and 
   save it in the mySelectedNode variable. */ 
private void treeView1_MouseDown(object sender, 
  System.Windows.Forms.MouseEventArgs e)
{
   mySelectedNode = treeView1.GetNodeAt(e.X, e.Y);
}

private void menuItem1_Click(object sender, System.EventArgs e)
{
   if (mySelectedNode != null && mySelectedNode.Parent != null)
   {
      treeView1.SelectedNode = mySelectedNode;
      treeView1.LabelEdit = true;
      if(!mySelectedNode.IsEditing)
      {
         mySelectedNode.BeginEdit();
      }
   }
   else
   {
      MessageBox.Show("No tree node selected or selected node is a root node.\n" + 
         "Editing of root nodes is not allowed.", "Invalid selection");
   }
}

private void treeView1_AfterLabelEdit(object sender, 
         System.Windows.Forms.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();
     }
   }
}

TreeView элемент.Свойство LabelEdit [^]

-КРОНА


agent_kruger

"e.CancelEdit = true;" сделал свою работу, сэр. Спасибо

Krunal Rohit

Рад, что смог помочь :)
-КРОНА

Рейтинг:
1

pickwickkim

Кроме того, узел должен быть обновлен после изменения метки как:

// Остановите редактирование, не отменяя изменения метки.
e.узел.Метод endedit(ложь);

//теперь обновите узел по тексту (это также изменяет node.fullpath)
e.узел.Текст = e.метка;


Смотрите также сайт MS ниже.

объект TreeNode.Метод EndEdit(Boolean) (System.Окна.Формы) | Microsoft Docs[^]


Richard Deeming

Спрашивали, отвечали и решали ЧЕТЫРЕ ГОДА НАЗАД.