主窗体中声明 一个登录窗体的变量,开始时创建,再次显示时,只需要调用 窗体的Show即可

解决方案 »

  1.   

    主窗体FormClosing事件中
    Application.Exit();在主窗体中添加启动窗体 属性
    public Start start{get;set;}启动窗体实例化主窗体后添加
    MainFor mainFor=new MainFor()
    mainFor.start=this;这样 重新登录按钮事件 start.show();就可以了
      

  2.   

    重新登录按钮事件 补充
    {
    start.show();
    this.close();
    }
      

  3.   


    这个Start 是从哪里来的?
      

  4.   

    在主窗体中定义的登录子窗体,当登录子窗体隐藏掉而不是Dispose掉时,是不能关闭主窗体的,因为子窗体还没释放。
      

  5.   

    可以关闭主窗体。主窗体是通过启动窗体实例化并show出来的
      

  6.   

    登录窗体:public partial class Frmlogin : Form
        {
            public Frmlogin()
            {
                InitializeComponent();
            }        private void btlogin_Click(object sender, EventArgs e)
            {
                FrmMain frmmain1 = new FrmMain(this);
                frmmain1.Show();
                this.Hide();
            }
        }主窗体: public partial class FrmMain : Form
        {
            Form frmlogin1;
            bool relogin = false;
            public FrmMain(Form frmlogin)
            {
                InitializeComponent();
                frmlogin1 = frmlogin;
            }        private void btRelogin_Click(object sender, EventArgs e)
            {
                relogin = true;
                this.Close();
            }        private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (relogin)
                {
                    frmlogin1.Show();
                }
                else
                {
                    frmlogin1.Close();
                }
            }
        }
      

  7.   

    我的登录窗体是这样写的                    
    if (F_main == null || F_main.IsDisposed)
                        {
                            this.Hide();
                            F_main = new F_Main(this,YGGH, YGXM, BZMC, ZYGX);
                            F_main.Show();                       
                        }
                        else
                        {
                            this.Hide();
                            F_main.Show();
                        }主窗体初始化这样写:
    公共变量:        Form flogin;
            bool relogin = false;
            public F_Main(Form f_login,string userGH, string userName, string userBZ, string ZYGX)
            {   
                InitializeComponent();
                YGGH = userGH;
                YGXM = userName;
                BZMC = userBZ;
                ZY = ZYGX;
                flogin = f_login3;
        
            }主窗体重新登录事件这样写
            private void btnReset_Click(object sender, EventArgs e)
            {            if (relogin)
                {
                    flogin.Show();
                }
                else
                {
                    flogin.Close();
                }
            }
    主窗体FormClosing事件这样写。
            private void F_Main_FormClosing(object sender, FormClosingEventArgs e)
            {
                //Application.Exit();
                relogin = true;
                this.Close();
            }我这样是按照13楼的写法。还是不行啊!没有把登录窗体调出来阿!
      

  8.   

    个人觉得最好别让登陆窗体作为程序的启动窗体,而应当让主窗体作为程序的启动窗体。在登录成功后登陆窗体this.Hide()只是让窗体可见隐藏,其占用内存没有释放,而在相当一段时间内该窗体是无用的。
        /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                DialogResult result;
                using (frmLogin frmLogin = new frmLogin())
                {
                    result = frmLogin.ShowDialog();
                }
                if (result == DialogResult.OK)
                {
                    Application.Run(new frmMain());
                }          
            }
    登陆窗体    public partial class frmLogin : Form
        {
            public frmLogin()
            {
                InitializeComponent();
            }        private void btnLogin_Click(object sender, EventArgs e)
            {
                bool isLoginOk = false;
                //登陆逻辑处理...假设成功
                isLoginOk=true;
                if (isLoginOk)
                {           
                   DialogResult = DialogResult.OK;
                }
            }
        }主窗体重新登录:    private void btnReLogin_Click(object sender, EventArgs e)
            {
                using (frmLogin frmLogin = new frmLogin())
                {
                    frmLogin.ShowDialog();
                }
            }
      

  9.   

    ///主窗public class 主窗口
    :Form {
    public  logonWindow 登录窗口  = new LogonWindow();public 主窗口加载完成后的方法()
    {
    登录窗口.closeing+=(s,e)=>{
    //这里不关闭窗口
    xx.放弃=true;//忘记怎么写了
    登录窗口.hide();
    };  登录窗口. ShowDialog();
    }
    //下次打开再用 登录窗口. ShowDialog(); 就行了
    }
      

  10.   

    至于重新登录功能,我那只是简写了,可以根据需要处理的。还有种做法,让程序重新启动即可。   private void btnReLogin_Click(object sender, EventArgs e)
            {
                Application.Restart();
            }
      

  11.   

    你写的跟我13楼写的不一样
    1.主窗体中btnReset_Click的代码和F_Main_FormClosing调转了
    2.主窗体的构造函数中我注释的那句你写错了。Form flogin;
       bool relogin = false;
       public F_Main(Form f_login,string userGH, string userName, string userBZ, string ZYGX)
       {   
      InitializeComponent();
       YGGH = userGH;
       YGXM = userName;
       BZMC = userBZ;
       ZY = ZYGX;
       flogin = f_login;//flogin=f_login3;
      }
      

  12.   

    ProgramLoad  登录窗口
    MainWindow 主窗口登录窗口MainWindow mw = new MainWindow(this);
    mw.Show(this);
    this.Visible = false;主窗体变量
    ProgramLoad mw_programload;
    主窗口重新登录this.Dispose();
    mw_programload.Visible = true;
    主窗口关闭事件private void MainWindow_FormClosed(object sender, FormClosedEventArgs e)
    {
        mw_programload.Dispose();
    }
      

  13.   

    ......少了个
    public MainWindow(ProgramLoad _form)
            {
                InitializeComponent();
                mw_programload = _form;
            }