Добавьте дочерние узлы в TreeView, используя параметры из другой формы в C#

У меня есть основная форма и древовидная структура. Я добавляю родительские узлы в древовидную структуру, нажимая кнопку.

        SegmentTreeView.BeginUpdate();
        SegmentTreeView.Nodes.Add(SegmentNameTextBox.Text);
        SegmentTreeView.SelectedNode = SegmentTreeView.Nodes[0];
        SegmentTreeView.ExpandAll();
        SegmentTreeView.EndUpdate();

У меня есть форма, скажем, FormB, которая отображается при нажатии кнопки в основной форме. На FormB есть поле со списком и кнопка. Когда я нажал кнопку «ОК» в FormB, мне нужно создать дочерние узлы под выбранным узлом дерева в соответствии с выбором поля со списком в FormB. Например, если Index0 выбран в поле со списком FormB и нажат «ОК», мне нужно создать один дочерний узел в родительском узле, который был создан ранее. Если выбран index1, два дочерних узла и так далее.

Я пробовал несколько способов. Однако myForm.SegmentTreeView.SelectedNode.Nodes.Add(newNode); всегда возвращает NULL. Таким образом, это дает ошибку при добавлении.

Пожалуйста, помогите решить проблему.


person Ilgaz Az    schedule 27.01.2015    source источник


Ответы (1)


Вы можете сделать это, создав свойство getter для FromB, на которое вы можете ссылаться в FormA после того, как будет показано FormB.

Пример:

В FormB добавьте свойство геттера, которое выглядит примерно так:

public int UserSelection
{
  get { return combobox.SelectedIndex(); }
}

Также сделайте так, чтобы ваша кнопка OK установила значение DialogResult в OK

DialogResult = System.Windows.Forms.DialogResult.OK;

затем на FormA вы вызываете форму и используете ее следующим образом:

private void someButton_Click(object sender, EventArgs e)
{
  using (FormB newForm = new FormB())
  {
    if (newForm.ShowDialog(this) == DialogResult.OK)
    {
      switch (newForm.UserSelection)
      {
        case 0:
          {
            // Add one node
            break;
          }
        case 1:
          {
            // Add two nodes
            break;
          }
        case 2:
          {
            // Add x nodes, etc
            break;
          }
      }
    }
  }
}
person Bernd Linde    schedule 27.01.2015