c# - 从另一个类传入 WinForm 类的访问对象
问题描述
我在表单(用户仪表板)上有一个类,它根据传递给它的内容显示用户信息。我可以成功获取用户的名字和姓氏以及其他信息。但现在的问题是,我有一个在另一个类上的按钮,我想访问已成功传递给用户仪表板的对象。所以,到目前为止,这是我可以成功传递用户对象并使用它的代码
public partial class UserDashboard : Form
{
public user user;
private dbModel db;
public UserDashboard(user user)
{
InitializeComponent();
this.user = user;
db = new dbModel();
LoadUser(user);
}
public void LoadUser(user p)
{
Color c = lbluserDisplayName.ForeColor = GetLabelForeColor(p);
if (c == null)
lbluserDisplayName.Text = user.lastname.ToUpper() + " " + user.firstname;
else if (c == Color.Red)
lbluserDisplayName.Text = user.lastname.ToUpper() + " " + user.firstname;
else
lbluserDisplayName.Text = user.lastname.ToUpper() + " " + user.firstname;
lblUserAddress.Text = user.street_address;
lblUserEmail.Text = "E: " + user.email;
lblUserHome.Text = "T: " + user.mobile;
lblUserTelephone.Text = "H: " + user.phone;
}
}
我试图在此处传递的同一个类上返回对象,以便我可以在另一个类上使用它
public user Testing(user user)
{
return this.user = user;
}
这是按钮所在的另一个类,我需要根据传递给 userDashboard 的用户来访问该类。但是当我测试对象时,它里面没有数据。
public partial class StartPage : Form
{
public StartPage()
{
InitializeComponent();
}
user u;
private void button1_Click(object sender, EventArgs e)
{
user u = udash.Testing(u);
if (u == null)
{
MessageBox.Show("Empty data");
}else
MessageBox.Show(u.firstname);
}
拜托,根据传递给第一堂课的内容,我有什么权利无法访问该对象?感谢任何帮助。
解决方案
您的代码的问题是您正在擦除您user
传递到表单中的表单变量。
在您的“测试”方法中,代码是:
public user Testing(user user)
{
return this.user = user;
}
这是用您传入的内容更新表单中的本地用户变量!
如果你把它分解,它会这样做:
this.user = user;
return(this.user)
查看您从节目中调用的表格:
用户你;
private void button1_Click(object sender, EventArgs e)
{
user u = udash.Testing(u);
if (u == null)
{
MessageBox.Show("Empty data");
}else
MessageBox.Show(u.firstname);
}
您定义变量user u
然后调用user u = udash.Testing(u)
它传入您的u
变量,然后覆盖表单user
变量并最终返回您调用时传入的内容Testing
。
在任何时候你都没有实例化u
变量,所以你传入 NULL,用 NULL 覆盖表单变量,然后将 NULL 返回给你的调用表单。
如果我们用我们看到的内容替换变量名:
user u = null
udash.Testing(null)
this.user = null
return null;
这是您的测试方法的外观:
public user Testing()
{
return(this.user);
}
这样,当您调用时,Testing
您将返回this.user
实例化表单时传入的信息。
您应该清理user
变量并将其变成公共属性:
public user User { get; set; }
然后你可以访问你传入的内容:
用户 myuser = myForm.User;
这使您不必通过该Testing
方法。
推荐阅读
- single-sign-on - keycloak spnego 身份验证失败,并显示“底层机制上下文尚未初始化”、“result = ACCEPT_INCOMPLETE”
- javascript - 用javascript计算html5画布游戏的fps
- docker - 在 docker 容器中“RUN pip3 install Pillow”后出现“没有名为 PIL 的模块”;dist-packages 目录中既不存在 PIL 也不存在 Pillow
- ruby-on-rails - 在我的 Ruby on Rails / GraphQL 项目中导致此未定义方法错误的原因是什么
- properties - 无法使用 UseDefaults 的 propertyWrapper 调用类型“TextField<_>”的初始化程序
- javascript - Passport.js:无法将用户序列化到会话中(已经添加了序列化代码)?
- java - 执行 @Bean 注解的方法时,Autowired 环境变量为 NULL
- symfony - Symfony 保护路线
- javascript - 需要使用 IIFE 函数输出邮政编码
- python - 如何使用python保存将reddit数据抓取为数据库文件的进度