我在表单(用户仪表板)上有一个类,该类根据传递给它的内容显示用户信息。 我可以成功获取用户的名字和姓氏以及其他信息。但是现在的问题是,我在另一个类上有一个按钮,我想获得对已成功传递给用户仪表板的对象的访问权限。 所以,到目前为止,这里是我可以成功传递用户对象并使用它的代码
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);
}
请问,基于传递给第一类的内容,我有什么不对的权限来访问该对象? 感谢任何帮助。
答案 0 :(得分:0)
代码存在的问题是,您正在擦除传递到表单中的表单user
变量。
在“测试”方法中,代码为:
public user Testing(user user)
{
return this.user = user;
}
这将使用您传入的内容更新表单中的本地用户变量!
如果将其分解,它会执行以下操作:
this.user = user;
return(this.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 u
,然后调用user u = udash.Testing(u)
,该变量将传入u
变量,然后覆盖user
形式的变量,最后返回您传入的内容您打电话给Testing
。
在任何时候都不会实例化u
变量,因此您传入NULL,用NULL覆盖form变量,然后将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; }
然后,您可以访问所传递的内容:
user myuser = myForm.User;
这省去了使用Testing
方法的麻烦。