草在墙头说的是一种方法,另外还可以用c#中的delegate来解决。方法如下:
主窗体是Form1类的实例,而从窗体是Form2类的实例。实现从从窗体向主窗体传递数据的方法的主要思路是:首先在Form2类中定义一个委托类型SendMess,这个委托类型中的参数类型为一个字符串类型(就是通过这个类型来传送字符串数据的,当然如果你存在其他类型的数据,可以通过修改这个参数类型来完成),然后根据这个委托类型在Form2类中申明一个Send事件。这样当在Form1类中创建一个Form2类的实例的时候,同时也为这个Form2类实例定义一个Send事件。当在从窗体中单击按钮时,则在按钮的单击事件中触发Send事件,并以从窗体中要传递的字符串作为参数,同时在主窗体中的处理Send事件的代码中,通过TextBox组件的text属性来接收从窗体传递来的字符串数据,至此就实现了把从窗体中的字符串数据传递到主窗体中了。
1.在form1的onload事件里加上这句
myForm.Send += new Form2.SendMess ( Send ) ;
2.在Form1.cs中的class的代码区加入下列代码,下列代码是创建一个Form2类的实例,并初始化:
private Form2 myForm = new Form2 ( ) ;
3.在Form1.cs中的Main函数之后,加入下列代码,下列代码的功能是处理myForm中的Send事件,正是在Send事件中实现从从窗体向主窗体传递字符串数据:
private void Send ( string str )
{
textBox1.Text = str ;
//把接收来的字符串通过TextBox组件显示出来
}
4.用下列代码替换Form1.cs中button1组件的Click事件对应的处理代码,下列代码的作用是显示Form2类的实例myForm:
private void button1_Click ( object sender , System.EventArgs e )
{
myForm.ShowDialog ( ) ;
//显示从窗体
}
5.在Form2.cs的class代码区添加下列代码,下列代码是在Form2类中增加一个事件类型Send,当然首先要定义一个委托类型SendMess:
public delegate void SendMess ( string str ) ;
//定义委托类型
public event SendMess Send ;
//定义一个事件类型
6.用下列代码替换Form2.cs中button2的Click事件对应的处理代码,下列代码的功能是触发Send事件,传递字符串数据:
this.Send();
至此,在上述步骤都正确完成