在winform中,现有一个父窗体,一个子窗体,在父窗体中有一组数据表记录:一行一个设备对应一个开关按钮。点击开关按钮,子窗体弹出,设备要运行起来,父窗体是这样的如果同时开了几台设备,点击关闭时,怎么样判断关闭的是哪个窗体呢?

解决方案 »

  1.   

    可以设一个全局变量啊,新子窗体运行时置值true,子窗体关闭时,对此变量置false,这样就可以了。另外,也可以在父窗体初始化一个新子窗体时,传递一个委托,这样子窗体可以在窗体的FormClosed事件中,调用这个委托,修改父窗体的对象或者变量。
      

  2.   

    用如下方法
            public void GetChildFrom(Form fr ,string formname)
            {
                foreach (Form chform in fr.MdiChildren)
                {
                    if (chform.Text.Trim().CompareTo(formname)==1)
                    {
                        chform.Activate();
                        //do something
                        Isfind = true;
                    }
                }
            }
      

  3.   

            public void GetChildFrom(Form fr ,string formname)
            {
                foreach (Form chform in fr.MdiChildren)
                {
                    if (chform.Text.Trim().CompareTo(formname)==1)
                    {
                        chform.Activate();
                        //do something
                        Isfind = true;
                    }
                }
            }用如下方法
      

  4.   

    在每个窗体中定义唯一表示,然后把text属性换成那个唯一标示作对比。
    而后对比成功,你想关闭那个打开的窗体,直接 chform.Close();就可以了。
      

  5.   

    你在子窗体中定义一个readonly的值,最好是唯一的,然后通过它来就得了。不用text。
      

  6.   

    FromChild frm = new FromChild();
    frm.Tag="唯一标示";
    frm.Show();
    关闭时候:
                foreach (Form var in Application.OpenForms)
                {
                    if (var.Tag == "当前要关闭的FromChild唯一标示")
                    {
                        var.Close();
                    }
                }