跨窗体相当于跨线程了,并不能直接调用
可以利用委托来实现
现在有两个窗体,form1和form2,form1中有一个textbox,form2中有一个button,要实现的功能是按下按钮改变textbox里的text
实现方法:
1.首先声明一个全局委托, public delegate void SetText();
2.在form2中实例化该委托:public SetText setText;
3.在form1中添加改变textbox里text的方法,
pubic void ChangeText()
{
textBox.Text = "变了吧!";
}
4.在form1中将上诉方法注册到form2中的委托实例
f2.setText += new SetText(ChangeText);
5. 在f2中运行委托实例。
以上5步的执行顺序不能错,要是没注册方法就执行委托,那必然是会出错的
form1代码:
using System;
using System.Windows.Forms;
namespace test
{
//定义一个全局委托
public delegate void SetText();
public partial class Form1 : Form
{
Form2 f2 = new Form2();
public Form1()
{
InitializeComponent();