在登录窗口中要让客户输入如下的一些参数,要带回到主程序中,可我怎么才能拿到主程序中呢?试了好多方法不管用。参数结构如下:
public class Config
{
   public string password;
   public string user;
   public string server;
   public string station;
   public bool sip;
   public bool remote;}
 我现在是在Mainform中定义了Config, 在MainForm的load中加入以下语句:  frmLogin oFrmLogin = new frmLogin();
  oFrmLogin.ShowDialog();
  if(oFrmLogin.DialogResult == DialogResult.Cancel)
  {
           //exi application
    oFrmLogin = null;
    Application.Exit();
  }
  else
  {
    //asdfasdf///
}
...
这样虽然能满足要求,但是特难看,先是显示主窗口再弹出登录窗口,看起来特难受,能不能做成先显示登录窗口,登录结束后再显示主窗口,而且登录窗口中输入的内容在主程序中也可以得到。谢谢!

解决方案 »

  1.   

    1. 在登录窗体中加入如下属性:private bool m_IsLogin = false;/// <summary>
    /// 是否通过登陆验证
    /// </summary>
    public bool IsLogin
    {
        get {return m_IsLogin;}
    }
    --------------------------------------------------
    2. 修改Main() 如下:[STAThread]
    static void Main() 
    {
        frmLogin oFrmLogin = new frmLogin();
        oFrmLogin.ShowDialog();    if(fl.IsLogin)
        {
    // 获取客户输入参数 Application.Run(new Mainform());
        }
    }
    我觉得这样看着比较舒服
      

  2.   

    [STAThread]
    static void Main() 
    {
        frmLogin oFrmLogin = new frmLogin();
        if(DialogResult.OK == oFrmLogin.ShowDialog())
        {
    // 获取客户输入参数         // 检查密码         if (LoginOK)
             { 
           Application.Run(new Mainform());
               }
        }
    }
      

  3.   

    else//登录成功,把登录信息写入客户端Cookie
    {
    HttpCookie MyCookie;
    MyCookie = new HttpCookie("PiUsersInfo");
    MyCookie.Values.Add("user", t_login.name);
    MyCookie.Values.Add("right", t_login.right.ToString() );
    Response.AppendCookie(MyCookie); //HttpCookie QuoteCookie=new HttpCookie["QuoteCookie"];
    //QuoteCookie.Value["QuoteUser"]= f_login.c_login(Txt_User.Text.Trim(),Txt_Pass.Text.Trim()).name;//用户名
    //QuoteCookie.Value["QuoteRight"]= f_login.c_login(Txt_User.Text.Trim(),Txt_Pass.Text.Trim()).right;//权限
    //HttpContext.Current.Response.Cookies.Add(QuoteCookie); Page.Response.Write("<script> window.opener=null;window.returnValue =1;window.close() </script>");//关闭此窗口,并返回值1,表示登录成功
    }
      

  4.   

    在登录窗体中定义全局变量,比如用户名public static string UserName;为 UserName 赋值,比如将文本框1的值赋给UserName
    UserName = this.textBox1.Text.Trim();在主窗体中引用即可。比如子窗体中有一个文本框1
    this.textBox1.Text = FrmLogin.UserName;