C#实现一个窗口调用另外一个窗口

a63489681 2014-07-29 08:54:15
子窗体调用主窗体的timer控件,实现主窗体的事件变化
功能需求是在子窗口上发生报警时,主窗口上的报警灯闪烁(timer实现两个图片交替)
...全文
479 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-07-29
  • 打赏
  • 举报
回复
逻辑错误. 不管是主窗体还是子窗体,你报警的变量应该是个全局的,而不是不打开子窗体就报不出警 主窗体和子窗体都从同一个全局变量取值就行了.
a63489681 2014-07-29
  • 打赏
  • 举报
回复
 public void OpenWindow(string ChildTypeString)
        {
            Form myChild = null;

            if (!ContainMDIChild(ChildTypeString))
            {
                //   Get   current   process   assembly   
                Assembly assembly = Assembly.GetExecutingAssembly();
                //   Create   data   type   using   type   string 
                Type typForm = assembly.GetType(ChildTypeString);
                //   Create   object   using   type's   "InvokeMember"   method   
                Object obj = typForm.InvokeMember(
                        null,
                        BindingFlags.DeclaredOnly |
                        BindingFlags.Public | BindingFlags.NonPublic |
                        BindingFlags.Instance | BindingFlags.CreateInstance,
                        null,
                        null,
                        null);
                //   Show   child   form  
                if (obj != null)
                {
                    myChild = obj as Form;
                    myChild.FormClosed += new FormClosedEventHandler(myChild_FormClosed);
                    myChild.StartPosition = FormStartPosition.CenterScreen;
                    myChild.MdiParent = this;
                    myChild.Show();
                    myChild.Focus();
                }
            }
        }
项目中原来创建新窗口的代码是这么写的,不是用new的方式,强行改为new的方式也不可取,因为项目中有一个frmParent的基类,所有的子窗口都基于frmParent的基类
qizhusaipao 2014-07-29
  • 打赏
  • 举报
回复
第一步,写好两个窗体 Form1 Form2 第二步,Form1里面有一个timer控件 两个按钮 一个picturebox控件 和imagelist控件;form2里面有一个按钮 第三步,一个按钮用来控制timer的启动与关闭 还有一个按钮弹出Form2窗体 第四步,timer控件的tick事件里面写pictuerbox里图片的切换事件 第五步,在form2 里面定义一个委托 public delegate void GreetingDelegate(); public GreetingDelegate create_subway; 第六步,在form2里面按钮的单击事件里面写上create_subway;就可以了。 第七步,在form1里面弹出form2窗体按钮的单击事件里面f1.create_subway=click; 第八步,click是启动计时器的方法,form1的另一个按钮就是调用这个方法 ok 完成
欢乐的小猪 2014-07-29
  • 打赏
  • 举报
回复
主窗口打开子窗口的时候,注册子窗口的报警事件。。就可以实现自动通知了
bdmh 2014-07-29
  • 打赏
  • 举报
回复
你还是搞个自定义事件吧,子窗体可以定时执行任务,然后触发事件通知主窗体
a63489681 2014-07-29
  • 打赏
  • 举报
回复
确实是这样,能提供个思路吗
ZhongGuanYao 2014-07-29
  • 打赏
  • 举报
回复
主窗体注册子窗体报警事件,当子窗体报警事件触发时,主窗体报警事件处理启动timer控件实现图片切换
Cnwanglin 2014-07-29
  • 打赏
  • 举报
回复
逻辑错了, 应该是发生报警的时候,通知主窗体,然后timer 来交替实现报警功能

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧