c#中,如何在一个窗体调用另一个窗体的数据并计算

时间:2021-12-27 05:09:26
1.在form1中,设立一个按钮;
2.单击按钮时,发生打开form2的事件;
3.form2中存在TEXTBOX1,其中存在一个计算函数;
4.FORM2.TEXTBOX1的计算函数能够直接提取FORM1的变量;
5.并且能够在单击FORM1的按钮后,弹出FORM2窗体的同时,在FORM2.TEXTBOX1中直接显示计算结果。
///////////////////////////////////////////////////////////////////////////////
请问最后一步怎么实现?
C#新人,非计算机专业,小白。。。

13 个解决方案

#1


在构造函数里传参数进去,或者Form2设一个public的成员来当参数

如果参数不止1个,那么最好封装成一个参数类进行传递

#3


引用 1 楼 stherix 的回复:
在构造函数里传参数进去,或者Form2设一个public的成员来当参数

如果参数不止1个,那么最好封装成一个参数类进行传递

///////////////////////////////////////////////////////
我想达成的效果是,单击FORM1里面的BUTTON按钮,就直接能够在FORM2里的TEXTBOX1里面显示结果,
现在我做的效果是,虽然能计算,但是要在FORM2中继续单击任意按键,才能让FORM2里的TEXTBOX1显示结果。
我想省略掉在“FORM2中单击任意按键→显示结果”这一过程。

#4


方法很多,先说我的建议
一: 在form2增加一个构造方法把参数传去,
然后在构造方法里调用那个函数,
最后把结果显示在控件里。如下:
public form2(object param)
{
  TEXTBOX1.text = fun(param);
}
在Form1里的Button的Click事件里写 Form2 frm = new Form2(具体值);
frm.show();

二:
如果不喜欢玩构造方法,那就增加属性或public变量.如下:
在Form2里增加public object Param;变量
在onload事件里调用函数
Form2里:
public object Param
protected override void OnLoad(EventArgs e)

   TEXTBOX1.Text =  fun(Param)
}

在Form1里: Form2 frm = new Form2();
frm.Param = 具体值
frm.show();

#5


引用 2 楼 crystal_lz 的回复:
传送门

/////////////////先码

#6


最后说一句,千万不要你中有我,我中有你,这样会高耦合
就是Form1里用到了Form2的变量和属性,Form2中也用到了Form1中的变量和属性

#7


引用 3 楼 csdn_dddq 的回复:
///////////////////////////////////////////////////////
我想达成的效果是,单击FORM1里面的BUTTON按钮,就直接能够在FORM2里的TEXTBOX1里面显示结果,
现在我做的效果是,虽然能计算,但是要在FORM2中继续单击任意按键,才能让FORM2里的TEXTBOX1显示结果。
我想省略掉在“FORM2中单击任意按键→显示结果”这一过程。


你在Form2的Shown事件里进行显示就行啊

#8


在form2的load函数中调用 函数,显示就行了

#9


引用 楼主 csdn_dddq 的回复:
5.并且能够在单击FORM1的按钮后,弹出FORM2窗体的同时,在FORM2.TEXTBOX1中直接显示计算结果。

单击FORM1的按钮后->弹出FORM2窗体->修改FORM2.TEXTBOX1的值
不就是这样吗?

#10


C#中:怎么实现同时调用一个dataGridView表(领料单)中的5条数据(订单号,注:订单号一样),同时在另一个dataGridView表(库存表)中实现(减法):库存数量--领料单中的数量,谢谢各位大佬!

#11


我的一般做法是直接把 form1 做为变量给 form2,同时将 form1 里的 textbox 设置为public,这术你在 form2 里想怎么改就怎么改。

#12


目前我想到的有两个方案,1 用传参的形式 FORM1 和 FORME  可以互相通讯。2 用句柄原理也可以的,可以获取到任何FORM 的句柄。

#13


class Form1:Form  
{  
    public Form1()  
    {  
        InitializeComponent();  
    }  
    void OpenForm2()//打开Form2  
    {  
        Form2 f2 = new Form2(this);//把Form1当参数传过去,在Form2中就可以使用Form1的变量和控件了  
    }  
---------------------------------------
public class Form2:Form  
{  
        public Form1 f1;  
        public Form2(Form1 f1)  
        {  
            this.f1 = f1;  
            InitializeComponent();  
        }  
  
        private void UseControls()//调用Form1的控件  
        {  
            f1.控件.....or f1.变量......  
        }  
}  

#1


在构造函数里传参数进去,或者Form2设一个public的成员来当参数

如果参数不止1个,那么最好封装成一个参数类进行传递

#2


#3


引用 1 楼 stherix 的回复:
在构造函数里传参数进去,或者Form2设一个public的成员来当参数

如果参数不止1个,那么最好封装成一个参数类进行传递

///////////////////////////////////////////////////////
我想达成的效果是,单击FORM1里面的BUTTON按钮,就直接能够在FORM2里的TEXTBOX1里面显示结果,
现在我做的效果是,虽然能计算,但是要在FORM2中继续单击任意按键,才能让FORM2里的TEXTBOX1显示结果。
我想省略掉在“FORM2中单击任意按键→显示结果”这一过程。

#4


方法很多,先说我的建议
一: 在form2增加一个构造方法把参数传去,
然后在构造方法里调用那个函数,
最后把结果显示在控件里。如下:
public form2(object param)
{
  TEXTBOX1.text = fun(param);
}
在Form1里的Button的Click事件里写 Form2 frm = new Form2(具体值);
frm.show();

二:
如果不喜欢玩构造方法,那就增加属性或public变量.如下:
在Form2里增加public object Param;变量
在onload事件里调用函数
Form2里:
public object Param
protected override void OnLoad(EventArgs e)

   TEXTBOX1.Text =  fun(Param)
}

在Form1里: Form2 frm = new Form2();
frm.Param = 具体值
frm.show();

#5


引用 2 楼 crystal_lz 的回复:
传送门

/////////////////先码

#6


最后说一句,千万不要你中有我,我中有你,这样会高耦合
就是Form1里用到了Form2的变量和属性,Form2中也用到了Form1中的变量和属性

#7


引用 3 楼 csdn_dddq 的回复:
///////////////////////////////////////////////////////
我想达成的效果是,单击FORM1里面的BUTTON按钮,就直接能够在FORM2里的TEXTBOX1里面显示结果,
现在我做的效果是,虽然能计算,但是要在FORM2中继续单击任意按键,才能让FORM2里的TEXTBOX1显示结果。
我想省略掉在“FORM2中单击任意按键→显示结果”这一过程。


你在Form2的Shown事件里进行显示就行啊

#8


在form2的load函数中调用 函数,显示就行了

#9


引用 楼主 csdn_dddq 的回复:
5.并且能够在单击FORM1的按钮后,弹出FORM2窗体的同时,在FORM2.TEXTBOX1中直接显示计算结果。

单击FORM1的按钮后->弹出FORM2窗体->修改FORM2.TEXTBOX1的值
不就是这样吗?

#10


C#中:怎么实现同时调用一个dataGridView表(领料单)中的5条数据(订单号,注:订单号一样),同时在另一个dataGridView表(库存表)中实现(减法):库存数量--领料单中的数量,谢谢各位大佬!

#11


我的一般做法是直接把 form1 做为变量给 form2,同时将 form1 里的 textbox 设置为public,这术你在 form2 里想怎么改就怎么改。

#12


目前我想到的有两个方案,1 用传参的形式 FORM1 和 FORME  可以互相通讯。2 用句柄原理也可以的,可以获取到任何FORM 的句柄。

#13


class Form1:Form  
{  
    public Form1()  
    {  
        InitializeComponent();  
    }  
    void OpenForm2()//打开Form2  
    {  
        Form2 f2 = new Form2(this);//把Form1当参数传过去,在Form2中就可以使用Form1的变量和控件了  
    }  
---------------------------------------
public class Form2:Form  
{  
        public Form1 f1;  
        public Form2(Form1 f1)  
        {  
            this.f1 = f1;  
            InitializeComponent();  
        }  
  
        private void UseControls()//调用Form1的控件  
        {  
            f1.控件.....or f1.变量......  
        }  
}