我现的是this,Hide();但是不想隐藏它,要直接关了。
但是,this.Close()它又登录不进去,直接连登录窗体也关了,要怎么做,它既关了,也能进到主界面?
学习中~~0~~

解决方案 »

  1.   

    主界面Show()了以后再关闭登录界面阿~
      

  2.   

    给主界面传递一个数据或者引用,然后关闭登陆界面,主截面自己出来,或者就在Program里面设置一个变量,登陆成功,登陆窗体自己关闭掉,主截面出现,登陆数据写入Program的公共对象中(自己定义一个公共对像)
      

  3.   

    你在主界面的load事件中调用登录对话框
    用showdialog的方式弹出来, 验证之后关闭对话框, 显示主界面
      

  4.   

    static void Main()
    {
        Form login = new FrmLogin();
        if (login.ShowDialog() == DialogResult.OK)//登录成功就设置登录窗体的DialogResult为OK
        {
            Application.Run(new FrmMain());
        }
    }
      

  5.   

    关闭好像不行啊,只能隐藏!
    然后把当前当前界面传过去,等主界面关闭的时候登陆界面也关闭!
    下面是我做的,可参考一下:
    这是登陆界面:/// <summary>
            /// 确定按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnLogin_Click(object sender, EventArgs e)
            {
                //验证用户名是否为空
                if (txtName.Text == "")
                {
                    MessageBox.Show("请输入用户名!");
                    return;
                }
                //验证密码是否为空
                if (txtPwd.Text == "")
                {
                    MessageBox.Show("请输入密码!");
                    return;
                }
                //实例化业务对象
                LoginBiz biz = new LoginBiz();
                //获取文本框中的值
                string name = txtName.Text.Trim();
                string password = txtPwd.Text.Trim();
                //调用用户登录方法
                DataSet ds = biz.UserLogin(name, password);
                if (ds.Tables[0].Rows.Count!=0)
                {
                    string name1 = ds.Tables[0].Rows[0]["CPI_Name"].ToString();
                    string password1 = ds.Tables[0].Rows[0]["Password"].ToString();
                    if (name.Equals(name1) && password.Equals(password1))
                    {
                        
                        Main main = new Main(this);
                        main.Show();
                        this.Visible = false;
     
                      //获取登录名                   
                        LoginInfo.loginName = txtName.Text.Trim();
                                        }
                }
                else
                {
                    MessageBox.Show("用户名或密码错误,请重新登录!");
                    return;
                }        }
      

  6.   

    这是主界面的代码:
    private Form f;
    public Main(Form form)
    {
        this.f = form;
        InitializeComponent();
    }在formClosing事件中
    /// <summary>
            /// 窗体关闭事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Main_FormClosing(object sender, FormClosingEventArgs e)
            {
                f.Close();
            }
      

  7.   

    static void Main() 

        Form login = new FrmLogin(); 
        if (login.ShowDialog() == DialogResult.OK)
        { 
            Application.Run(new FrmMain()); 
        } 
    }在FrmLogin中登录成功后,如下设置this.DialogResult = DialogResult.OK;
    this.Close();如果不成功,this.DialogResult = DialogResult.NO;
    this.Close();
      

  8.   

    先隐藏下,主界面load时关闭登陆界面。
      

  9.   

    在Program里先显示登陆界面,把登陆界面结果传递给全局变量,关闭登陆界面,Run(主窗体界面)
      

  10.   

    static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                frmLogin frm = new frmLogin();
                using (frm)
                {
                    if (frm.ShowDialog() == DialogResult.OK)//内容验证密码通过this.DialogResult=DialogResult.OK; this.close(); 
                    {
                       Application.Run(new frmMain(frm.userid, frm.power));
                        frm.Dispose();
                    }
                }
             }
      

  11.   

    在program.cs里面设置using System;
    using System.Collections.Generic;
    using System.Windows.Forms;namespace SStraining
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                登录窗体 啊 = new 登录窗体();
                啊.ShowDialog();
                if (登录窗体.登录变量 == true)
                { Application.Run(new MainForm());}
                
            }
        }
    }意思是你要在登录窗体里面设置一个登录变量bool
      

  12.   

    .NET中,应用程序的启动窗口被认为是主窗口,而当主窗口关闭了,应用程序就会自动退出
    这时因为应用程序的消息循环和主窗口句柄挂接在一起的,所以主窗口销毁后,程序就会退出。登录,以及启动屏幕,一般是这样做的:1、Application.Run启动的还是主窗口;
    2、然后在主窗口的构造函数的最开始,启动“启动屏幕窗口”(如果没有启动屏幕,就掠过这个);
    3、然后在主窗口的Load事件中,启动“登录窗口”
       注意:要以模态的形式来启动窗口,即:ShowDialog(),
       这一步中,如果用户取消登录,则再执行Application.Exit()退出程序;
    4、在窗口的Shown事件的最后,关闭“启动屏幕窗口”(如果没有启动屏幕,就掠过这个)。以上是一个比较好的启动过程
      

  13.   

    一般可以将窗体运行在托盘上using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection;
    using System.Runtime.CompilerServices;
    using System.Runtime.InteropServices;using System.IO;
    using System.Configuration;
    namespace 学籍管理系统
    {
        public partial class Form1 : Form
        {
            //ini文件路径
            private string loginstr = Application.StartupPath + @"\login.ini";
            //ini文件段落名
            private string section = "CopyRightByDengliang";
            private string servername = ".";
            private string databasename = "";
            private fmmain main = new fmmain();
            private fmlogin login;
            public Form1()
            {
                InitializeComponent();
                login = new fmlogin(main);
                this.timer1.Enabled = true;     
            }
            [DllImport("kernel32.dll")]
            private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
            [DllImport("kernel32.dll")]
            private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
            private void initform()
            {
                this.timer1.Enabled = false;
                //取得程序集Title
                string maininfo = StringCom.AssemblyTitle;
                //取得程序集公司名
                string maincompany = StringCom .AssemblyCopyright;
                notifyIcon1.ShowBalloonTip(3000,maininfo+"已经启动!",maincompany,ToolTipIcon.Info);
                //环境检测
                if (!File.Exists(loginstr))
                {
                    StringCom.showInformation("注册文件login.ini已经丢失!程序不能启动!");
                    Application.Exit();
                }
                else
                {
                    //注册信息读取
                    WriteiniValues("constr", "server=.;Integrated Security=SSPI;Database=StuInfoManagement");
                    string constr=ReadiniValues("constr");
                    if (constr != "")
                    {
                        //设置Setting.settings
                        Properties.Settings config = Properties.Settings.Default;
                        config.ConnectionString = constr;
                        config.Save();
                    }
                    if(ReadiniValues("checked")=="1")
                    {
                    //读取用户名
                    string username = ReadiniValues("username");
                    if (username != "")
                        login.txtloginusername.Text = username;
                    //读取密码
                    string pwd = ReadiniValues("pwd");
                    if (pwd != "")
                        login.txtloginpwd.Text = pwd;
                    login.cbpwd.Checked = true;
                    }
                    //数据库验证
                    bool result = ConnectionCom.ValidateConnection(ConnectionCom.getconnstr());//验证数据库是否能正常连接
                    if (!result)
                    {
                        //StringCom.showInformation(result.ToString());
                        Application.Exit();
                    }
                    else
                    {
                        //登陆窗体显示
                        this.Visible = false;
                        this.showLogin();
                    }
     
                }
                
                        }
            /// <summary>
            /// 写入注册文件
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            /// <returns></returns>
            private bool  WriteiniValues(string key, string value)
            {
                bool result=false;
                try
                {
                    WritePrivateProfileString(section ,key ,value,loginstr);
                    result=true;
                }catch
                {
                }
                return result;
            }
            /// <summary>
            /// 读取配置文件
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            private string ReadiniValues(string key)
            {
                string result="";
                StringBuilder temp = new StringBuilder(200);
                int i = GetPrivateProfileString(this.section,key,"无法读取配置文件",temp ,200,loginstr);
                if (temp.ToString() == "无法读取配置文件")
                {
                   // StringCom.showInformation("配置文件读取出错!");
                }
                else
                {
                    result = temp.ToString();
                }
                return result;        }
            /// <summary>
            /// 显示登陆
            /// </summary>
            private void showLogin()
            {
                
                login.Show();
                显示界面ToolStripMenuItem.Enabled = false;
                隐藏界面ToolStripMenuItem.Enabled = true;
            }
            private void Form1_Load(object sender, EventArgs e)
            {        }        private void toolStripMenuItem2_Click(object sender, EventArgs e)
            {        }        private void 退出程序QToolStripMenuItem_Click(object sender, EventArgs e)
            {
                //更改主体窗体隐藏参数
                main.IsSave = false;
                Application.Exit();
            }        private void toolStripMenuItem1_Click(object sender, EventArgs e)
            {        }        private void timer1_Tick(object sender, EventArgs e)
            {
                initform();        }        private void 显示界面ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                main.Show();
                ToolStripMenuItem own = (ToolStripMenuItem)sender;
                own.Enabled = false;
                隐藏界面ToolStripMenuItem.Enabled = true;
            }        private void 隐藏界面ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                main.Hide();
                ToolStripMenuItem own = (ToolStripMenuItem)sender;
                own.Enabled = false;
                显示界面ToolStripMenuItem.Enabled = true;
            }
        }
    }
      

  14.   

    推荐这种做法,一般来说,Application.Run的仍然应该是主窗体,
    登录是否成功通过登录窗体的对话框返回值来确定,关键的是不能在登录窗体中启动主程序。否则一关闭登录窗体,整个程序也就结束了。
    如果偏要在登录窗体中打开主程序的话,那么可以改成这样static void Main()中启动应用程序应该这样写
    static void Main()
    {
    ....
    Application.Run();   //不加参数调用}
      

  15.   

    一般情况下是隐藏窗口,再在主窗口中的formClosed事件中加Application.Exit()退出应用程序       private void MainForm_FormClosed(object sender, FormClosedEventArgs e)//关闭时退出程序
            {
                   Application.Exit();
            }
      

  16.   

    在我BLOG里写了三种方法:http://blog.csdn.net/Sugar_Tiger/archive/2008/10/23/3131401.aspx
    你自己看看。
      

  17.   

        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                //Application.EnableVisualStyles();
                //Application.SetCompatibleTextRenderingDefault(false);
                //XmlAdapter.SaveConfigFile();
                // 全局初始化
                DXGlobalUtil.GlobalInit();
                // 验证是否为正版软件
                if (AppInformation.SoftReg == true)
                {
                    if (EDAdapter.CheckValue <= 0)
                    {
                        return;
                    }
                }
                
                // 登录验证
                using (SUserLoginForm frm = new SUserLoginForm())
                {
                    if (DialogResult.OK != frm.ShowDialog())
                    {
                        return;
                    }
                }
                
                // 运行程序
                DXGlobalUtil.ApplicationRun();
            }
        }