使用C#在Windows应用程序中将值从一个表单检索到另一个表单
我有一个登录表单和ChangePassword表单。 我想检索登录时在登录表单中输入的用户名的值。
我创建了一个名为RetUserName的属性,如下所示:
public partial class frmLogin : Form { private string UseNam; public string RetUserName { get { return UseNam; } set { UseNam = value;} } }
在按钮单击事件中,我编写了以下代码,以便设置属性的值:
this.RetUserName = (string)txtUserName.Text;
现在要检索属性的值,我在changepassword表单的form_load事件中使用了以下编码:
Form_Load事件:
frmLogin objLogin = new frmLogin(); string UserName1 = objLogin.RetUserName; MessageBox.Show("NAME : " + UserName1); txtUserName.Text = UserName1;
现在,当我执行上述程序时不会产生任何错误,但是用户在登录表单中输入的值不会显示在changepassword表单中。
任何人都可以让我知道我应该如何更改编码,以便我可以检索用户在登录表单中输入的值,以显示在changepassword表单中?
请帮我! 提前致谢!
您实际上正在创建登录表单的新实例,该实例不知道您输入的用户名。
我建议你在你的changepassword表单中添加一个属性UserName
。 并在表单的调用代码中分配值。 喜欢这样:
//create and show login dialog frmLogin objLogin = new frmLogin(); objLogin.ShowDialog(); //create changepassword form frmChangePwd objChangePwd = new frmChangePwd(); objChangePwd.UserName = objLogin.RetUserName; objChangePwd.ShowDialog();
您正在创建登录表单的本地变量,因此它将在其范围之后被销毁,并且随之而来的UseNam的值也将丢失。 您必须将其存储在您想要使用它的位置。
您也可以通过以下方式(以及其他方式:)来做到这一点
// This class is mainly used to transfer values in between different components of the system public class CCurrent { // Currently logged in user public static string UserName = ""; // Indicates to whole system whether database is Valid and connectable or not ? public static Boolean DatabaseValid = false; // Indicates whether we are able to connect databse or not. public static Boolean DatabaseConnectable = false; }
现在,您可以在代码中执行以下操作:
frmLogin objLogin = new frmLogin(); objLogin.ShowDialog(); CCurrent.UserName = objLogin.RetUserName; MessageBox.Show("NAME : " + CCurrent.UserName); txtUserName.Text = CCurrent.UserName;
你是如何显示objLogin
表格的?
应该有些喜欢
objLogin.ShowDialog();
在你的代码中……