刚看完你的文章。
在登陆窗体关闭的时候,创建主窗体的对象并显示。
此时如何把登陆窗体的数据传送到主窗体。
登陆窗体已经消亡,其内部数据已经不存在了。我不想使用静态类的方法。

解决方案 »

  1.   

    没想出什么好的实现方法,lz直接把登陆窗口hide吧
      

  2.   

    本人愚见:创建一个单体模式的类AppInfo,将其中要被程序访问的公共变量定义成public,然后在程序中定义public static AppInfo app = new AppInfo(),就能在程序的其他地方通过app.XXX访问公共变量。
      

  3.   

    普遍的做法都是先把所有窗体创建好,然后暂时不显示(Hide()),等登陆成功了再Show()一下吧。
    至于传递参数,应该也不难吧。窗体本身也是类。只要修改一下默认的构造函数,使其能够携带参数就好了吧。你所说的一个窗体关闭后再创建新窗体的方法我还真不知道。估计没有吧要有的话,我也想知道。除非这两个窗体还被另外一个什么东西控制,否则应该不行吧public class Main_Win : System.Windows.Forms.Form
    {
    private User_Login login; public Main_Win(){} private static void Main()
    {
            Application.Run(new Main_Win());
    } private void Main_Win_Load(object sender, System.EventArgs e)
    {
    InitializeComponent();
    this.Hide();
    login = new User_Login(this);
    login.ShowDialog();
    }
    }public class User_Login : System.Windows.Forms.Form
    {
    private Main_Win mainwin; // 修改[User_Login]窗体默认的构造函数
    public User_Login ( Main_Win mainWin )
    {
    InitializeComponent();
    this.mainwin = mainWin;
    }

    // 中间代码省略 private void Login()
    {
    if( LoginSuccess )
    {
    this.mainwin.Show();
    this.Close();
    }
    }
    }
      

  4.   

    如果你看完我的文章的话,那么可以从login窗体获得userinfo这个类型的对象,那么如果想传递给其他窗体,可以通过其他窗体的构造函数来完成传递。例如
    frmMain myMain = new frmMain( ui );//Get "ui" from login window
      

  5.   

    kingdomgps(工作没激情) ( ) 信誉:100    Blog  2006-09-13 14:52:00  得分: 0  
     
     
       本人愚见:创建一个单体模式的类AppInfo,将其中要被程序访问的公共变量定义成public,然后在程序中定义public static AppInfo app = new AppInfo(),就能在程序的其他地方通过app.XXX访问公共变量。
      
     
    这不是跟定义静态类差不多的方法么!
    实质就是全局变量啊,我不想搞太多的全局变量。
     redfoxlee() ( ) 信誉:100    Blog  2006-09-13 14:54:00  得分: 0  
     
     
       普遍的做法都是先把所有窗体创建好,然后暂时不显示(Hide()),等登陆成功了再Show()一下吧。
    至于传递参数,应该也不难吧。窗体本身也是类。只要修改一下默认的构造函数,使其能够携带参数就好了吧。你的方法建立在登陆窗体存在的情况下,如果hide了,关闭主程序时,就会遇到麻烦。
    修改构造函数,给他传递参数,参数的值来自的窗体类必须还存在。
    但是此时登陆窗体已经关闭,哪里来的数据源啊!
      

  6.   

    我是这样用的
    FormLogin formLogin=new FormLogin();
    formLogin.ShowDialog();
    if(formLogin.LoginOK)
    {
    Application.Run(new FormMain(formLogin.m_SupplyInfo));
    }
    else
    { }在formLogin退出时,用formLogin.Hide();
    formLogin.m_SupplyInfo是在formLogin中申明的对象。对你说的【你的方法建立在登陆窗体存在的情况下,如果hide了,关闭主程序时,就会遇到麻烦。】
    有什么麻烦呢,我用起来还可以啊