![](/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.