![](/img/trans.png)
[英]How do I add Nodes through Backgroundworker to a TreeView from a Database and reload Children while expanding a Node in Windows Forms C#?
[英]How to add nodes in TreeView control from two different Forms in C#
我的程序:
表格(Form1)包含:
表格(Form2)包含:
類數組
我的目標是使用兩種形式( Form1和Form2 )使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.