问题描述
子窗体调用主窗体的timer控件,实现主窗体的事件变化功能需求是在子窗口上发生报警时,主窗口上的报警灯闪烁(timer实现两个图片交替)
解决方案
解决方案二:
逻辑错了,应该是发生报警的时候,通知主窗体,然后timer来交替实现报警功能
解决方案三:
主窗体注册子窗体报警事件,当子窗体报警事件触发时,主窗体报警事件处理启动timer控件实现图片切换
解决方案四:
确实是这样,能提供个思路吗
解决方案五:
你还是搞个自定义事件吧,子窗体可以定时执行任务,然后触发事件通知主窗体
解决方案六:
主窗口打开子窗口的时候,注册子窗口的报警事件。。就可以实现自动通知了
解决方案七:
第一步,写好两个窗体Form1Form2第二步,Form1里面有一个timer控件两个按钮一个picturebox控件和imagelist控件;form2里面有一个按钮第三步,一个按钮用来控制timer的启动与关闭还有一个按钮弹出Form2窗体第四步,timer控件的tick事件里面写pictuerbox里图片的切换事件第五步,在form2里面定义一个委托publicdelegatevoidGreetingDelegate();publicGreetingDelegatecreate_subway;第六步,在form2里面按钮的单击事件里面写上create_subway;就可以了。第七步,在form1里面弹出form2窗体按钮的单击事件里面f1.create_subway=click;第八步,click是启动计时器的方法,form1的另一个按钮就是调用这个方法ok完成
解决方案八:
publicvoidOpenWindow(stringChildTypeString){FormmyChild=null;if(!ContainMDIChild(ChildTypeString)){//GetcurrentprocessassemblyAssemblyassembly=Assembly.GetExecutingAssembly();//CreatedatatypeusingtypestringTypetypForm=assembly.GetType(ChildTypeString);//Createobjectusingtype's"InvokeMember"methodObjectobj=typForm.InvokeMember(null,BindingFlags.DeclaredOnly|BindingFlags.Public|BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.CreateInstance,null,null,null);//Showchildformif(obj!=null){myChild=objasForm;myChild.FormClosed+=newFormClosedEventHandler(myChild_FormClosed);myChild.StartPosition=FormStartPosition.CenterScreen;myChild.MdiParent=this;myChild.Show();myChild.Focus();}}}
项目中原来创建新窗口的代码是这么写的,不是用new的方式,强行改为new的方式也不可取,因为项目中有一个frmParent的基类,所有的子窗口都基于frmParent的基类
解决方案九:
逻辑错误.不管是主窗体还是子窗体,你报警的变量应该是个全局的,而不是不打开子窗体就报不出警主窗体和子窗体都从同一个全局变量取值就行了.