You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何全局访问UserInfo类存储的登录用户字段值

方案1:使用静态全局实例(最符合你全局调用的需求)

这个方案不需要改现有窗体的传参逻辑,整个应用任意模块都能直接读取用户信息。

  1. 先修改UserInfo类,添加静态全局属性:
namespace MYCUSTOMAPP
{
    class UserInfo
    {
        // 新增静态全局实例,整个应用共享
        public static UserInfo Current { get; set; }
        
        public string userId;
        public string userType;
        public string userName;
        public string userUserName;
        public string userPhone;
        public string userIdCard;
    }
}
  1. 修改登录逻辑,赋值后把实例挂到静态属性上:
    找到你登录代码里创建loggedUser的部分,加一行赋值:
// Add logged user info to `UserInfo` class
UserInfo loggedUser = new UserInfo();
loggedUser.userId = result.GetValue(result.GetOrdinal("Id")).ToString();
loggedUser.userName = result.GetValue(result.GetOrdinal("Name")).ToString();
loggedUser.userType = result.GetValue(result.GetOrdinal("UserType")).ToString();
loggedUser.userUserName = result.GetValue(result.GetOrdinal("UserName")).ToString();
loggedUser.userPhone = result.GetValue(result.GetOrdinal("Phone")).ToString();
loggedUser.userIdCard = result.GetValue(result.GetOrdinal("IdCard")).ToString();

// 新增这行,把当前登录用户存到全局静态属性
UserInfo.Current = loggedUser;

MainWindow mainWindow = new MainWindow();
this.Hide();
mainWindow.ShowDialog();
Show();
  1. 在MainWindow里直接取值即可:
// 任意地方都可以这么拿用户信息
string userId = UserInfo.Current.userId;
string userName = UserInfo.Current.userName;

方案2:构造函数传参(适合不想用静态变量的场景)

如果你不需要全应用随处调用,只需要在MainWindow里用,可以用构造参数传递的方式:

  1. 给MainWindow添加带参数的构造函数:
public partial class MainWindow : Form
{
    // 存当前登录用户信息
    public UserInfo LoggedUser { get; set; }
    
    // 原有无参构造函数保留
    public MainWindow()
    {
        InitializeComponent();
    }
    
    // 新增带UserInfo参数的构造函数
    public MainWindow(UserInfo user) : this()
    {
        LoggedUser = user;
    }
}
  1. 登录时创建MainWindow的时候传入实例:
// 把原来的MainWindow mainWindow = new MainWindow();改成下面这行
MainWindow mainWindow = new MainWindow(loggedUser);
  1. MainWindow里取值:
string userId = LoggedUser.userId;

注意事项

两种方案都只在应用运行期间有效,关闭程序后数据就会清空,符合你不需要每次查库的需求。如果需要持久化存储登录状态(比如下次打开不用重新登录),可以搭配本地配置文件、注册表等方式存储加密后的用户信息。

内容的提问来源于stack exchange,提问作者mafortis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 12:09:03