使用C#在Windows应用程序中检索从一个窗体到另一个窗体的值

问题描述:

我有一个登录窗体和ChangePassword窗体。我想要在登录时检索登录表单中输入的用户名的值。使用C#在Windows应用程序中检索从一个窗体到另一个窗体的值

我创建了一个名为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表单中显示?

请帮帮我! 在此先感谢!

+0

实现一个共享或静态属性...这是诀窍..您的代码将实例化一个新对象frmLogin objLogin = new frmLogin(); – RameshVel 2009-09-15 08:06:36

您正在创建一个登录窗体的局部变量,所以它将在其范围后被销毁,并且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形式?
应该somehitng像

objLogin.ShowDialog(); 
在你的代码

...

+0

我有一个MDI表单,将在用户成功登录后显示。并使用菜单控件打开changepassword表单。 执行程序时,第一种形式是登录表单,第二种形式是mdi表单,而mdi表单由菜单控件在菜单控件的帮助下由用户可以打开更改密码表单组成。 – Sheetal 2009-09-15 08:01:45

您actualy创建登录表单的一个新实例,该实例并不知道你输入的用户名。

我建议你在你的changepassword表单中添加一个属性UserName。并在表单的调用代码中分配值。 Someting like this:

//create and show login dialog 
frmLogin objLogin = new frmLogin(); 
objLogin.ShowDialog(); 

//create changepassword form  
frmChangePwd objChangePwd = new frmChangePwd(); 
objChangePwd.UserName = objLogin.RetUserName; 
objChangePwd.ShowDialog();