簡體   English   中英

如何從C#中的兩個不同窗體在TreeView控件中添加節點

[英]How to add nodes in TreeView control from two different Forms in C#

我的程序:

表格(Form1)包含:

  • button1控件
  • TreeView1控件

表格(Form2)包含:

  • burron1控件
  • label1控件
  • label2控件

類數組

  • 公共靜態ar2數組

我的目標是使用兩種形式( Form1Form2 )使ar2數組中的每個元素都成為TreeView1控件中的節點。 棘手的是,我只需要從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
    }
}

在此處輸入圖片說明

單擊以添加特殊元素作為TreeView1中的節點。

然后, foreach循環應繼續直到滿足下一個條件;否則,如果沒有條件,它將繼續進行到最后,將ar2中的所有元素添加為節點。

任何幫助將不勝感激。

在Form1中,創建公共方法,以便可以從外部添加TreeView節點。

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

重做button1_Click代碼以使用AddElement方法。 還要用for替換foreach循環。 這樣,將有可能跳過您將從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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM