1.\ C# WINFORM
        
        RegisterInfo formRegisterInfo = null;        private void buttonX1_Click(object sender, EventArgs e)
        {
            if (formRegisterInfo == null)
            {
                formRegisterInfo = new RegisterInfo();
                formRegisterInfo.TopLevel = false;
                formRegisterInfo.Parent = groupPanel;
                formRegisterInfo.BringToFront();
                formRegisterInfo.Show();
            }
            else
            {
                if (formRegisterInfo.WindowState == FormWindowState.Minimized)
                    formRegisterInfo.WindowState = FormWindowState.Normal;
                formRegisterInfo.BringToFront();
            }
        }
点了buttonX1在grouppanel出现RegisterInfo窗口如果把窗口关了在点按钮就没效果了 怎么办?是不是要在FormClosing事件写些什么?应该怎么写啊?...就是想实现点按钮最多出现同一个窗体2.ShowDialog()出一个窗体 上一个按钮点击后要希望执行上面的代码提示这个错误: 应该怎么办?
非静态的字段、方法或属性“CSMS.MainForm.groupPanel”要求对象引用请大家多多帮忙初学者 谢谢`~!

解决方案 »

  1.   

    else 
                { 
                    if (formRegisterInfo.WindowState == FormWindowState.Minimized) 
                        formRegisterInfo.WindowState = FormWindowState.Normal; 
                    formRegisterInfo.Show();
                    formRegisterInfo.BringToFront(); 
                } 
      

  2.   

    formRegisterInfo.Parent = this.groupPanel1
    上面的groupPanel1是你窗体上的groupPanel实例
      

  3.   

    况且这样写的话formRegisterInfo != null 它就会执行ELSE里的类容...如果反复点按钮就会出现多个相同的拉
      

  4.   

    改成这个样子:        private void buttonX1_Click(object sender, EventArgs e) 
            { 
                if (formRegisterInfo == null) 
                { 
                    formRegisterInfo = new RegisterInfo(); 
                    formRegisterInfo.TopLevel = false; 
                    formRegisterInfo.Parent = groupPanel; 
                 } 
                   formRegisterInfo.BringToFront(); 
                   formRegisterInfo.Show(); 
                   formRegisterInfo.WindowState = FormWindowState.Normal; 
      

  5.   

    7楼的 那样写如果不为空 点按钮会反复SHOW出同一个窗体啊.在事件外创建一个RegisterInfo对象formRegisterInfo = null//并为空
    点按钮判断formRegisterInfo是否为空
    为空就实例化 并显示这个窗口.
    下面的ELSE只是判断他在groupPanel是不是最小化 是的话就变大前端显示.好像是:对象formRegisterInfo实例化后就不为空了
    现在在关闭这个窗口让对象formRegisterInfo重新变为空就可以解决这个问题但是不知道怎么写代码请高手指点!
      

  6.   

    你不是要Show同一个窗体吗?改成这样看看:       private void buttonX1_Click(object sender, EventArgs e) 
            { 
                if (formRegisterInfo == null) 
                { 
                    formRegisterInfo = new RegisterInfo(); 
                    formRegisterInfo.TopLevel = false; 
                    formRegisterInfo.Parent = groupPanel; 
                    formRegisterInfo.Closing+=new CancelEventHandler(formRegisterInfo_Closing);
                 } 
                   formRegisterInfo.BringToFront(); 
                   formRegisterInfo.Show(); 
                   formRegisterInfo.WindowState = FormWindowState.Normal;          }
         ...
           private void formRegisterInfo_Closing(object sender,CancelEventArgs)
           {
              formRegisterInfo=null;
           }
      

  7.   

    formRegisterInfo_Closing      private void formRegisterInfo_Closing(object sender,CancelEventArgs)
           {
              formRegisterInfo=null;
           }提示上下文不存在这两个
      

  8.   

            public static RegisterInfo formRegisterInfo = null;
            private void buttonX1_Click(object sender, EventArgs e)
            {
                
                if (formRegisterInfo == null)
                {
                    formRegisterInfo = new RegisterInfo();
                    formRegisterInfo.TopLevel = false;
                    formRegisterInfo.Parent = groupPanel1;
                    formRegisterInfo.BringToFront();
                    formRegisterInfo.Show();
                }
                else
                {
                    if(formRegisterInfo.WindowState == FormWindowState.Minimized)
                        formRegisterInfo.WindowState = FormWindowState.Normal;
                        
                    formRegisterInfo.BringToFront();
                    
                 }
            }        private void RegisterInfo_FormClosing(object sender, FormClosingEventArgs e)
            {
               MainForm.formRegisterInfo= null;        
            }这样终于实现了 谢谢~~