2016-10-25 14 views
0

私は2つのプロジェクトを持っています。 1つはMainと呼ばれ、もう1つはUserAuthです。ユーザーがUserAuthを渡さない限り、Mainを実行したくありません。私はコードに間違っていることが多いことを知っています。それが私が助けを求めている理由です。私がしたいのは、このLoginFormからuserAuthenticatedを返すことです。私はそれを行う方法を理解することはできません。私はpublic変数userAuthenticatedを作成しましたが、私はそれにアクセスする方法がありません。ここに私のコードは次のとおりです。C#のAuthフォームから変数を返すことができません

によって呼び出され
namespace UserAuth 
{ 
    public partial class LoginForm : Form 
    { 
    public bool userAuthenticated; 

    private int attempts = 0; 

    public bool LoginForm() // Error 'LoginForm': member names cannot be the same as their enclosing type UserAuth  
    { 
     InitializeComponent(); 
     return (userAuthenticated); 
    } 

    private void btnLogin_Click(object sender, EventArgs e) 
    { // authenticate user -- works fine } 

LoginForm lf = new LoginForm(); 
    lf.Show(); 

任意の助けをいただければ幸いです。

+4

コンストラクタは、構築されたクラスのインスタンスを返すことになっています。 'bool'を返すようにすれば、コンストラクターの契約を破ることになります。 –

+2

このLoginFormクラスを呼び出すコードを追加できますか? – Steve

+0

@MatiasCicero - 私は知っているが、私はそれを回避する方法を見つけることができません!それは問題だ。 – Missy

答えて

4

私はそのグローバル変数をすべて削除します。私はモーダルダイアログで予期される定義済みのパターンでのみ動作します。今すぐログインフォームを呼び出すコードは、単に

using(LoginForm fLogin = new LoginForm()) 
{ 
    if(DialogResult.OK == fLogin.ShowDialog()) 
    { 
     MessageBox.Show("Login OK"); 
    } 
    else 
    { 
     MessageBox.Show("Login failed"); 
    } 
} 
する必要があります言い換えれば、私はWinformsのデザイナーを通じてDialogResult.CancelにごbtnLoginのプロパティDialogResultを設定しますし、その後btnLogin_Click

// this is the form constructor, cannot return anything here 
public LoginForm() 
{ 
    InitializeComponent(); 
} 
private void btnLogin_Click(object sender, EventArgs e) 
{ 
    // this method contains your logic to authenticate the user 
    // the method returns true if the user is ok or false if not 
    bool result = AuthenticateUser(); 

    // If the user is authenticated close the login form setting OK 
    // as the return value 
    if(result) 
     this.DialogResult = DialogResult.OK; 
    // else the return from the form will be DialogResult.Cancel as 
    // set in the button's DialogResult property 
} 

にコードを変更します

+0

素晴らしいです、スティーブ。それは動作し、私はそれを完全に理解する。ありがとうございました!!! – Missy

関連する問題