使用C#中另一个表单的参数将子节点添加到TreeView

时间:2015-01-27 12:48:11

标签: c# treeview parent

我有一个主要表格和树视图。 我通过单击按钮将父节点添加到树视图中。

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

我有一个表格 - 表示FormB-,通过单击主表单上的按钮显示。 FormB上有一个组合框和一个按钮。当我在FormB上单击“确定”按钮时,我需要根据FormB上组合框的选择在树的选定节点下创建子节点。 例如,如果在FormB的comboBox上选择了Index0并单击“确定”,我必须在之前创建的父节点下创建一个子节点。如果选择了index1,则有两个子节点,依此类推。

我尝试了几种方法。然而,myForm.SegmentTreeView.SelectedNode.Nodes.Add(newNode);总是返回NULL。因此,它在添加时会出错。

请帮助解决问题。

1 个答案:

答案 0 :(得分:0)

您可以在FromB上创建一个getter属性,在FormA显示后可以在FormB中引用该属性。

示例:

FormB上,添加一个类似于此的getter属性:

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;
          }
      }
    }
  }
}