问题描述
在程序中,我想用From2来显示比如列车的位置,速度等信息,这些信息显然是会变化的。然后我发现我写的程序,只有在重新打开From2的情况下才会更新数据。请问大神如何把From1中的数据动态地传递给From2(就是当From1数据发生变化后,From2能立刻显示)然后我From1的代码:Informationinformation=newInformation(speed,lieche1zuobiao,dianluma);if(sinformation==1){information.Show();}sinformation=0;from2中publicpartialclassInformation:Form{publicintzuobiao;intb;stringm;publicInformation(intspeed,intlieche1zuobiao,stringdianluma){this.m=dianluma;this.b=speed;this.zuobiao=lieche1zuobiao;InitializeComponent();}publicdelegatevoidDisplayUpdate();privatevoidInformation_Load(objectsender,EventArgse){label7.Text=m;label6.Text=Convert.ToString(b*80+"km/h");label5.Text=Convert.ToString(zuobiao);}}只有重新打开From2才会更新数据
解决方案
解决方案二:
form1中跟踪数据变化,当数据变化时触发一个事件,将数据作为事件参数;From2中订阅事件,更新数据显示。
解决方案三:
你要让Form2感知到Form1的变化~可以用事件机制触发,或者socket通知form2
解决方案四:
//form2中publicvoidShowText(stringm,intb,intzuobiao){label7.Text=m;label6.Text=Convert.ToString(b*80+"km/h");label5.Text=Convert.ToString(zuobiao);}//form1中//这个Informationinformation对象写成全局的Informationinformation=newInformation(speed,lieche1zuobiao,dianluma);//然后发生变化时information.ShowText(....);
解决方案五:
建议你用一个form不然很复杂。一个form也是需要多线程处理你这个问题。
解决方案六:
定义静态类。在FORM1中维护数据。FORM2中绑定静态类数据即可。数据变化则界面变化。或者通过回调!
解决方案七:
在调用form2时,将form1也传进去。例如:Informationinformation=newInformation(speed,lieche1zuobiao,dianluma);改为Informationinformation=newInformation(speed,lieche1zuobiao,dianluma,this);这样,form2就能读form1中public变量。form1中修改这个值,form2不断的读这个值。
解决方案八:
并没能解决问题。大神们能不能具体点,最好来点代码。比如:我在From1中publicinta;a=1;(但是这个a的值是会变化的,比如隔一会加1)这个时候我点击按钮,弹出From2窗口,From2中有一个label.text来显示a的值。请问,有没有什么办法能让From2里的label.text实时显示a的值。我现在用的方法,都是只能关闭From2后再打开它,才能更新a的值。
解决方案九:
引用5楼RubenLuLu的回复:
定义静态类。在FORM1中维护数据。FORM2中绑定静态类数据即可。数据变化则界面变化。或者通过回调!
数据变化,怎么实现界面变化?
解决方案十:
简单试了下,下面代码可以更新数据publicpartialclassForm1:Form{frm_Mainfm;publicForm1(frm_Mainf){InitializeComponent();fm=f;}privatevoidbutton1_Click(objectsender,EventArgse){fm.Text=fm.Text+"5";}}
解决方案十一:
你可以参考一下这个问题解决的第一种方法http://zhidao.baidu.com/question/1301841591239423779.html