1

ユーザーのログインが成功すると、アラートボックスにユーザー名が表示され、ユーザーがパスワードを変更できる別のフォームがポップアップ表示されます。パスワードを変更できるようにするために、条件ステートメントで (ログインフォームからの) ユーザー名の値を使用したいと考えています。

別のフォームから取得したこの値を取得するにはどうすればよいですか? ありがとう。

ここで画像を見る:http://i49.tinypic.com/11r7zw8.png

4

4 に答える 4

2

何があなたを混乱させますか? ユーザー名を次のフォームに渡します。3 番目のフォームが他のフォームを認識しなければならない理由がわかりません。これは、もう 1 つの無駄な依存関係になります。

于 2012-07-16T05:03:03.450 に答える
0

ログインに成功したときに発生するカスタム イベントを作成し、 CustomEventArgsで情報を渡し、2 番目のフォームを起動するときにそれを使用できます。

このようなもの:

フォーム1

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; }
    } 
}

パスワードの変更

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

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

}
于 2012-07-16T05:04:29.657 に答える
0

これを行う 1 つの方法は、他のフォームでアクセスできるユーザー名のログイン フォームでパブリック プロパティを使用することです。

例えば:

LoginForm 内で、パブリック プロパティを作成します。

public string UserName { get; private set;}

このプロパティを LoginForm に入力し、他のフォームに渡します。2 番目のフォームのオブジェクトを作成するときに、最初のフォームからデータにアクセスし、それを別のフォームのプロパティ/コンストラクターに渡すことができます。

例えば、

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

これは、これを行う方法の 1 つにすぎません。

これで問題は解決しますか?

これを行う別の方法は、デリゲート/イベントを使用することです。

于 2012-07-16T05:05:07.333 に答える
0

ログイン フォームの UserName テキスト ボックスを公開して、他のどのフォームからもアクセスできるようにします。

LoginForm.designer.cs のコードを変更できます。

于 2012-07-16T05:44:50.357 に答える