问题描述
Application.OpenForms["Form1"].Controls["Label1"].Text="ii";
我之前在Form1种添加了Label这个控件,又在Form2中的代码里面添加了上述代码,实现当按Form2上面的按键的时候,将Form1中原本显示“Label1”的文字变成“ii”。Application.OpenForms["Form1"].Controls["timer1"].Enabled=true;
于是我又按照此种方法想控制Form1的定时器(代码还是在Form2中添加的),貌似不好使。以下是Form1.cs的代码。usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{intjishu=0;Form2object_Form2;publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){object_Form2=newForm2();object_Form2.Show();}publicvoidtimer1_Tick(objectsender,EventArgse){jishu++;this.label1.Text=jishu.ToString();//a.Text="sssss";//a.Show();//object_Form4.Show();}}}
调试的过程中函数timer1_Tick根本没有进入,按道理不是timer1使能的时候这个函数就可以进入的吗?
解决方案
解决方案二:
C#的问题在.NET技术板块比较集中
解决方案三:
解决方案四:
会结贴吗?不管你是要改变其他窗体的label文本,还是控制其他窗体的定时器,都可以通过委托事件完成。
解决方案五:
你的timer1是否有.Start()?
解决方案六:
Application.OpenForms["Form1"].Controls这个里面是没有timer控件的.你可以这样:Form2里面添加:Timer_Timer;publicForm2(Timertimer){InitializeComponent();_Timer=timer;}然后通过_Timer.Enabled=true;Form1里面:object_Form2=newForm2(this.timer1);object_Form2.Show();
解决方案七:
用委托与事件吧,不要用这种全局乱来的方式,不好调试
解决方案八:
没看到Timer变量啊,还有timer需要时间间隔和启动
解决方案九:
form2中想控制form1的定时器那就把控制方法写在form1中,然后form2调用form1中的该方法。