使用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(); 

在你的代码中……