如何在 C# 中从两个不同的窗体在 TreeView 控件中添加节点
How to add nodes in TreeView control from two different Forms in C#
我的程序:
表格 (Form1) 包含:
- button1 控件
- TreeView1 控件
表格(Form2)包含:
- burron1 对照
- label1 控件
- label2 控件
类数组
- public静态ar2数组
我的目标是使用两种形式(Form1 和 Form2)。棘手的是,我只需要从 Form2 添加满足特定条件的元素。我不知道该怎么做。
我添加了 if 条件 假装下一个元素是特殊的并且必须从 Form2 添加。
if (element == "3")
{
Form2 frm2 = new Form2(counter);
frm2.Show();
break;
}
因此当元素等于 3 时调用 Form2 并仅从 Form2 添加下一个元素。
在 Form2 上,我需要单击按钮 1 并仅添加 这个特殊元素 (在本例中为元素 4),然后添加其余元素的元素必须从 foreach 循环 自动添加到 Form1.
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[=73 的所有元素=] 作为节点。
任何帮助将不胜感激。
在 Form1 中创建 public 方法,以便从外部添加 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
只是一个class级变量,它持有一个counter
值。
int currentElementIndex = 0;
public Form2(int counter)
{
...
currentElementIndex = counter;
}
我的程序:
表格 (Form1) 包含:
- button1 控件
- TreeView1 控件
表格(Form2)包含:
- burron1 对照
- label1 控件
- label2 控件
类数组
- public静态ar2数组
我的目标是使用两种形式(Form1 和 Form2)。棘手的是,我只需要从 Form2 添加满足特定条件的元素。我不知道该怎么做。
我添加了 if 条件 假装下一个元素是特殊的并且必须从 Form2 添加。
if (element == "3")
{
Form2 frm2 = new Form2(counter);
frm2.Show();
break;
}
因此当元素等于 3 时调用 Form2 并仅从 Form2 添加下一个元素。
在 Form2 上,我需要单击按钮 1 并仅添加 这个特殊元素 (在本例中为元素 4),然后添加其余元素的元素必须从 foreach 循环 自动添加到 Form1.
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[=73 的所有元素=] 作为节点。
任何帮助将不胜感激。
在 Form1 中创建 public 方法,以便从外部添加 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
只是一个class级变量,它持有一个counter
值。
int currentElementIndex = 0;
public Form2(int counter)
{
...
currentElementIndex = counter;
}