一个(winform)窗体如何调用另一个窗体中的函数

时间:2021-09-03 19:48:35
form1生成form2,form2生成form3.现在要在form3中调用form1中的一个函数funx(int a)怎么做?

12 个解决方案

#1


晕了 form3中建个form1的实例
form1 form1 = new form1();
form1.funx(int "");

#2


关注,这样会不会内存中又有个副本了?引用名字空间可以吗?

#3


如果该方法是实例方法,则form3里一定要有form1的引用,可以通过构造函数或者属性把form1的引用传过来(先传到form2 再到form3)
如果是静态方法就简单多了,Form1.fun();

#4


用事件委托方式

#5


form a=new form();
a.funx()

#6


如果只是使一个方法,不多最先的form1修改:
form1 form1 = new form1();
form1.funx(int "");
form1.Dispose();//释放;

如果你要修该最先的form1,得用其他方法;
如:
1.在form2中添加属性和字段
Form1 f = null;
gForm1
{
set{f=value}

2.form1在打开form2之前对f赋值;
Form2 form2 = new Form2();
form2.gForm1 = this;
form2.Show();

3.在form3中添加属性和字段;
Form1 f = null;
hForm1
{
set{f=value}


4.fom2中打开form3同样操作;

Form3 form3 = new Form3 ();
Form3 .hForm1 = f;
Form3 .Show();

5.最后你就可以修改已经带开的form1了;

#7


在Form1里面对自己做静态public static Form1 frm = new Form1(),在Form3就可以通过Form1.frm.fun()去调用了!

#8


把你那个函数写成静态的

#9


一个是使用静态方法的调用,也是做简单的调用直接:Form1.Fun();
实例方法则要应用Form1的实例,
form1 form1 = new form1();
form1.funx(int "");
form1.Dispose();//释放;

#10


TO:
xiao_p(曼沙珠华) 是想要调用原来的Form1实例(且这个函数会改Form1实例上的一些东西)
leirenqi(混混) '用事件委托方式',怎么用的呢
 _jfeng(静心) 以下代码在form2的什么地方写呢
Form1 f = null;
gForm1
{
set{f=value}

我在public Form2()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
的下面写入的结果在
set {f = value;} 行报错:应输入 ;

#11


public static Form1 form = new Form1(),
Form1.form.fun)

还要注意一定要把你调用的函数和变量改为PUBLIC!!!

#12


//全局变量
private Form1 f = null;
public gForm1
{
set{f=value};

#1


晕了 form3中建个form1的实例
form1 form1 = new form1();
form1.funx(int "");

#2


关注,这样会不会内存中又有个副本了?引用名字空间可以吗?

#3


如果该方法是实例方法,则form3里一定要有form1的引用,可以通过构造函数或者属性把form1的引用传过来(先传到form2 再到form3)
如果是静态方法就简单多了,Form1.fun();

#4


用事件委托方式

#5


form a=new form();
a.funx()

#6


如果只是使一个方法,不多最先的form1修改:
form1 form1 = new form1();
form1.funx(int "");
form1.Dispose();//释放;

如果你要修该最先的form1,得用其他方法;
如:
1.在form2中添加属性和字段
Form1 f = null;
gForm1
{
set{f=value}

2.form1在打开form2之前对f赋值;
Form2 form2 = new Form2();
form2.gForm1 = this;
form2.Show();

3.在form3中添加属性和字段;
Form1 f = null;
hForm1
{
set{f=value}


4.fom2中打开form3同样操作;

Form3 form3 = new Form3 ();
Form3 .hForm1 = f;
Form3 .Show();

5.最后你就可以修改已经带开的form1了;

#7


在Form1里面对自己做静态public static Form1 frm = new Form1(),在Form3就可以通过Form1.frm.fun()去调用了!

#8


把你那个函数写成静态的

#9


一个是使用静态方法的调用,也是做简单的调用直接:Form1.Fun();
实例方法则要应用Form1的实例,
form1 form1 = new form1();
form1.funx(int "");
form1.Dispose();//释放;

#10


TO:
xiao_p(曼沙珠华) 是想要调用原来的Form1实例(且这个函数会改Form1实例上的一些东西)
leirenqi(混混) '用事件委托方式',怎么用的呢
 _jfeng(静心) 以下代码在form2的什么地方写呢
Form1 f = null;
gForm1
{
set{f=value}

我在public Form2()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
的下面写入的结果在
set {f = value;} 行报错:应输入 ;

#11


public static Form1 form = new Form1(),
Form1.form.fun)

还要注意一定要把你调用的函数和变量改为PUBLIC!!!

#12


//全局变量
private Form1 f = null;
public gForm1
{
set{f=value};