从两个或多个表单获取值C#

时间:2012-07-16 04:55:32

标签: c# sql winforms connect

好的,用户登录成功后,警报框会显示用户名,然后会弹出另一个表单,让用户可以更改密码。我想在条件语句中使用用户名(来自登录表单)的值来更改密码。

我如何获得来自其他表单的此值?感谢。

在此处查看图片:http://i49.tinypic.com/11r7zw8.png

4 个答案:

答案 0 :(得分:2)

什么让你感到困惑? 将用户名传递给下一个表单,我没有看到第三个表单必须知道任何其他表单的原因。这将是一个无用的依赖。

答案 1 :(得分:0)

您可以创建一个Custom Event,这个CustomEventArgs将在成功登录后被提升,您可以使用{{3}}传递信息,然后在您填写第二张表格时使用它。

这样的事情:

<强> Form1中

public partial class Form1 : Form
{

    Logon logon;
    PasswordChange pass;

    public Form1()
    {
        InitializeComponent();

        logon = new Logon();
        logon.raiseLoginEvent += new Logon.LoginSuccesful(logon_raiseLoginEvent);
        logon.ShowDialog();

    }

    void logon_raiseLoginEvent(object sender, LoginEventArgs e)
    {
        pass = new PasswordChange();
        pass.LoginName = e.Login;
        pass.ShowDialog();
    }


}

<强>登录

public partial class Logon : Form
{
    public delegate void LoginSuccesful(object sender, LoginEventArgs e);
    public event LoginSuccesful raiseLoginEvent;

    public Logon()
    {
        InitializeComponent();
    }


    private void Logon_FormClosing(object sender, FormClosingEventArgs e)
    {
        LoginEventArgs ev = new LoginEventArgs("Admin");
        raiseLoginEvent(this, ev);
    }
}

public class LoginEventArgs : EventArgs
{
    public LoginEventArgs(string s)
    {
        loginName = s;
    }
    private string loginName;
    public string Login
    {
        get { return loginName; }
        set { loginName = value; }
    } 
}

<强> PasswordChange

public partial class PasswordChange : Form
{
    public PasswordChange()
    {
        InitializeComponent();
    }

    public string LoginName
    {
        get {return  textBox1.Text; }
        set { textBox1.Text = value; }
    }

}

答案 2 :(得分:0)

执行此操作的一种方法是使用Login表单中的公共属性来获取您可以以其他形式访问的用户名。

例如:

在LoginForm中,创建一个公共属性

public string UserName { get; private set;}

在LoginForm中填写此属性并将其传递给其他表单。在创建第二个表单的对象时,您可以从第一个表单访问数据,然后将其传递给其他表单的属性/构造函数。

例如,

FacultyForm facultyForm=new FacultyForm();
facultyForm.UserName = loginForm.UserName; //in this case you have to create a property in other form too. 

这只是其中一种方法。

这可以解决问题吗?

另一种方法是使用Delegate / Events。

答案 3 :(得分:0)

将登录表单的UserName文本框设为公共,以便您可以从任何其他表单进行访问。

您可以在Login Form.designer.cs

中更改代码