Form1:有个treeview1,Form2:有button1,textbox1,
现在实现button1控制treeview1添加一个节点,节点内容为textbox1.text我看了一些介绍是用控件异步:
代码如下:
2、Form2
public delegate void AddNodeDelegate(string strNode);
public partial class Form2 : Form
{
public AddNodeDelegate addNodeDelegate;
public Form2()
{
InitializeComponent();
addNodeDelegate = new AddNodeDelegate(AddNode);
} private void AddNode(string str)
{
treeView1.Nodes.Add(str);
}
}
3、Form1public partial class Form1 : Form
{
private Form2 form2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
form2 = new Form2();
form2.Show();
} private void button2_Click(object sender, EventArgs e)
{
if (form2 == null) //如果Form2没打开就不做什么。
return;
form2.addNodeDelegate("xyz");
}
}可是不管用,请帮忙给出个新的代码,谢谢了
现在实现button1控制treeview1添加一个节点,节点内容为textbox1.text我看了一些介绍是用控件异步:
代码如下:
2、Form2
public delegate void AddNodeDelegate(string strNode);
public partial class Form2 : Form
{
public AddNodeDelegate addNodeDelegate;
public Form2()
{
InitializeComponent();
addNodeDelegate = new AddNodeDelegate(AddNode);
} private void AddNode(string str)
{
treeView1.Nodes.Add(str);
}
}
3、Form1public partial class Form1 : Form
{
private Form2 form2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
form2 = new Form2();
form2.Show();
} private void button2_Click(object sender, EventArgs e)
{
if (form2 == null) //如果Form2没打开就不做什么。
return;
form2.addNodeDelegate("xyz");
}
}可是不管用,请帮忙给出个新的代码,谢谢了
private void AddNode(string str)写成public,就可以 form2.AddNode("")treeView1的Modifiers属性设为public,就可以 form2.treeView1.Nodes.Add("");
委托相当于一个消息我看楼主的代码是希望 在form2里面点了一个button然后更新form1里面的treeview那么就应该在form1里面启动form2引用,然后注册form2的委托,最后在form2里面发送消息
form1接到消息后更新成员treeview代码是拿记事本改的 你直接改一下Form1public partial class Form1 : Form
{
private Form2 form2;
public Form1()
{
InitializeComponent();
}
//接到返回的信息后将form2提交的text作为节点加入
private void addNode(string sNode)
{
treeView1.Nodes.Add(sNode);
}
//启动应该是在from1里面起的
private void button1_Click(object sender, EventArgs e)
{
form2 = new Form2();
//注册from2的委托
form2.addNodeDelegate+=new AddNodeDelegate(addNoe);
form2.Show();
}
}、Form2
public delegate void AddNodeDelegate(string strNode);
public partial class Form2 : Form
{
public AddNodeDelegate addNodeDelegate ;
public Form2()
{
InitializeComponent();
}
//这里当按钮点下时只需要触发就可以了 private void button2_Click(object sender, EventArgs e)
{
string sNode=text1.text;
addNodeDelegate(sNode);
}
}
{
treenode node=new node();
node.Text="111";
...
treeview.nodes.add(node);
}
form2里面 button_click事件里面调 form1.SetTree()就可以了。
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx#sec5