窗体中调用主窗体的方法和控件

通过最简单的 在Form1 中写 Form2 frm=new Form2();可以通过frm掉用Form2中的非静态变量.但不能控制Form2的控件.也不能获取控件的值.用全局变量降低代码可读性,获取窗体1的textbox值并传递给窗体2,目前我只会2种麻烦的方法.

1.看似最简单的, 

form2:

public string value;

public Form2(string m)

{InitializeComponent();

value=m;

}

form1;

Form2 frm=new Form2(Form1.textbox1.text);

这个实现了把Form1的textbox1.text 赋值给了Form2中的value.

这个方法不能传递方法,会占用很多资源.我还不知道如何用这个传递方法,委托.

第2种;

使用委托,委托对应相应的方法,调用方法的返回类型和传入参数必须和委托声明的类型一致.

转载:http://www.cnblogs.com/pfcan66/archive/2012/09/12/2680596.html

1.Form1:

public string  a(string k)

{

retrun "Form1方法 "+k;

}

2.在Form2中建立和a方法一样类型的委托对象实例化

public  delegate string  weituo(string m)--建立委托

public weituo b  --实例化委托 

3.在Form1中的Form_Load或者其他事件下写(如buton)

Form2 frm=new Form2();

frm.b=a;--把a 方法添加到委托b上

4.在Form2中调用委托b;

textbox.text=b("这是Form2页面");

运行结果:

 

委托方法就是每次调用不同类型方法都要重写一个.

 

----------------------------------类中调用主窗体的方法和控件------有时候不知道为啥不好使-----------------------------------------------

要调用的窗体:

public partial class Form1 : Form

public static Form1 form1;--建立静态

public Form1()
{
InitializeComponent();

form1=this

}

然后在类中:用 Form1.form.引用的方法

 就是this(属性,方法),this始终指向当前对象的.在C# 中,函数或者属性都应该属于一个对象

只要对对象中用this 就可以看到该对象的所有方法属性

posted @ 2016-12-06 15:32  国产小品牌  阅读(643)  评论(1编辑  收藏  举报