如何在C#

时间:2015-05-12 10:36:04

标签: c# forms winforms treeview

我的节目:

表单(Form1)包含:

  • button1 control
  • TreeView1控件

表格(表格2)包含:

  • burron1 control
  • label1 control
  • label2 control

ClassArray

  • public static ar2 array

我的目标是使用两种形式( Form1 )将 ar2 数组中的每个元素作为 TreeView1 控件中的节点窗体2 )。棘手的是我只需要从 Form2 添加满足特定条件的元素。我不知道该怎么做。

我添加如果条件假装下一个元素是特殊的并且必须从Form2添加。

                if (element == "3")
            {
                Form2 frm2 = new Form2(counter);
                frm2.Show();
                break; 
            }

因此,当element等于3时,调用Form2并仅从Form2添加下一个元素。

Form2 上,我需要点击button1并添加仅此特殊元素(在本例中为元素4),然后必须自动添加其余元素来自Form1中的 foreach循环

Form1代码:

public partial class Form1 : Form
{
    int counter = 0;
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        foreach (string element in ClassArray.ar2)
        {
            treeView1.Nodes.Add(element);
            counter++;

            if (element == "3")
            {
                Form2 frm2 = new Form2(counter);
                frm2.Show();
                break; 
            }
        }
    }
}

ClassArray代码:

    class ClassArray
{
    public static string[] ar2 = new string[8] { "1", "2", "3", "4", "5", "6", "7", "8" };

}

Form2代码:

public partial class Form2 : Form
{

    public Form2(int counter)
    {
        InitializeComponent();
        label1.Text = "Elements added from Form1 = "+counter.ToString();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        //Add the special element as a note
    }
}

enter image description here

单击以将特殊元素添加为TreeView1中的节点。

然后 foreach 循环应该继续,直到满足下一个条件,或者如果没有条件,它将继续结束,将 ar2 中的所有元素添加为节点。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

在Form1中创建公共方法,以便可以从外部添加TreeView节点。

    public void AddElement(int index)
    {
        string element = ClassArray.ar2[index];
        treeView1.Nodes.Add(element);
        counter++;
    }

返工button1_Click代码以使用AddElement方法。同时将foreach循环替换为for。这样就可以跳过一个元素,您将从Form2添加。

    private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < ClassArray.ar2.Length; i++)
        {
            AddElement(i);

            if (ClassArray.ar2[i] == "3")
            {
                Form2 frm2 = new Form2(counter);
                // ShowDialog will stop code execution until dialog is closed
                frm2.ShowDialog(this); // "this" - will be a Dialog Owner; it will come in handy in Form2
                i++; // skip "4"
            }
        }
    }

现在在Form2中获取Form1实例并调用以前创建的AddElement以将另一个节点添加到TreeView中。

    private void button1_Click(object sender, EventArgs e)
    {
        //Add the rest of the elemnts as notes
        Form1 form = Owner as Form1;
        form.AddElement(currentElementIndex);
    }

currentElementIndex只是一个类级变量,它包含counter值。

    int currentElementIndex = 0;

    public Form2(int counter)
    {
        ...
        currentElementIndex = counter;
    }