1、用File和FileInfo二个类来讨论一下静态成员和实例成员
2、用户登录问题:用户数据怎样在登录窗体和主窗体之间共用(这样好不好?)
public class MainFrm{
  ........
  private static UserInfo currentUser=null;
  public static UserInfo CurrentUser{
    set{
      currentUser=value;
    }
    get{
      return currentUser;
    }
  }
  static void Main(){
    MainFrm FrmMain=new MainFrm();
    LoginFrm FrmLogin=new LoginFrm();
    FrmLogin.ShowDialog();
    if(FrmLogin.DialogResult==DialogResult.OK)
      Application.Run(FrmMain);
    else
      Application.Exit();
  }
}
public class LoginFrm{
  ....
  private void btnLogin_Click(object sender, System.EventArgs e){
   ..... 
   MainFrm.CurrentUser=User.GetUserInfo(txtLogin.Text);
   ....
  }
}

解决方案 »

  1.   

    如果不想传参数的话,可以试试AppDomain.GetData()/AppDomain.SetData()
      

  2.   

    不需要将Mainfrm的UserInfo,和Loginfrm的GetUserInfo(txtLogin.Text);声明为静态成员,公用成员就可以了
    Loginfrm在关闭close()之后它的对象并没有释放,在GetUserInfo(txtLogin.Text后面要加一句Loginfrm.Dispose();
      

  3.   

    噢错了,应该是FrmLogin.Dispose()
      

  4.   

    不好意思,User是UserInfo类的一个实例来的.如果MainFrm中的CurrentUser不声明为静态的话怎么把数据传过去?这里应该不能用MainFrm的实例吧?AppDomain.GetData()/AppDomain.SetData()
    这个没试,不知道怎么用!看下帮助先:)
      

  5.   

    改成下面这样不行吗?
    public class MainFrm{
      ........
      private UserInfo currentUser=null;
      public UserInfo CurrentUser{
        set{
          currentUser=value;
        }
        get{
          return currentUser;
        }
      }
      static void Main(){
        MainFrm FrmMain=new MainFrm();
        LoginFrm FrmLogin=new LoginFrm();
        FrmLogin.ShowDialog();
        if(FrmLogin.DialogResult==DialogResult.OK)     
          FrmMain.CurrentUser=User.GetUserInfo(txtLogin.Text);
          FrmLogin.Dispose();
          Application.Run(FrmMain);
        else
          Application.Exit();
      }
    }
    public class LoginFrm{
      ....
      private void btnLogin_Click(object sender, System.EventArgs e){
       ..... 
      
       ....
      }
    }
      

  6.   

    FrmMain.CurrentUser=FrmLogin.GetUserInfo;//声明一个新的公用属性
      

  7.   

    应该不可能这样的吧!User是UserInfor类的实例,而txtLogin是登录窗体里面的一个文本输入框的名字。因为主窗体中的CurrentUser是登录后的用户,有机会在其它窗体中使用。
      

  8.   

    AppDomain.GetData()/AppDomain.SetData()
    好象也是局部的,在C#中如果多窗体共用数据(CurrentUser)用什么方法实现比较好?
      

  9.   

    AppDomain是应用程序域,怎么是局部的呢?除非你是要给其他应用程序通信,比如QQ,呵呵