2016-03-29 11 views
0

私はC#で作業して以来、非常に長い時間を過ごしていて、もう一度初心者のように感じています。私は、APIを使用するプロジェクトで簡単なGUIを作成しています。単純なログインフォームを作成する必要があります。誰かがメインフォームの「ログイン」をクリックしてユーザー名とパスワードの入力を要求すると、そのフォームを閉じてそのクラスに情報を格納するときに、セカンダリフォームがポップアップします。問題は、フォームが閉じられたときにどのようにわかるのでしょうか?フォームを介して情報を渡す

これを行う簡単な方法や、セカンダリフォームでログインボタンをクリックしたときにユーザー名とパスワードを返す方法はありますか?次のように

私のコードの基礎は、以下のとおりです。

Main.cs

namespace My_Namespace { 
    public partial class frmMain : Form { 
     public frmMain() { 
      InitializeComponent(); 
     } 
    } 

    private void mnitLogin_Click(object sender, EventArgs e) { 
     Login login = new Login(); 
     login.ShowDialog(); 
    } 
} 

Login.cs

namespace My_Namespace { 
    public partial class Login : Form { 
     private String Username; 
     private String Password; 

     public Login() { 
      InitializeComponent(); 
     } 

     private void btnLogin_Click(object sender, EventArgs e) { 
      Username = txtUsername.Text; 
      Password = txtPassword.Text; 
      this.Close(); 
     } 

     public String getUsername() { 
      return Username; 
     } 

     public String getPassword() { 
      return Password; 
     } 
    } 
} 
+0

このようなアプリにパスワードを保存することはお勧めしません。 APIに認証されると、何らかのトークンやCookieが取得できますか? – mason

+0

@masonええ、私はそれをすべて認識していますが、それは私の問題ではありません。 – Spedwards

答えて

0

Loginフォームがカスタムフォームではなく、既定のダイアログであると仮定すると、 「ログイン」ボタンの「.Click」イベントへのアクセスを開始し、それを開く前にハンドラを追加するのが最も簡単です。

ハンドラがアクティブになったら、詳細を取得し、有効性を確認してログインフォームを閉じる(または有効でないメッセージを有効にする)frmMainからハンドラを起動できます。

0

ShowDialogの完了後、つまりウィンドウが閉じられた後、Clickイベントで実行が継続されます。オブジェクトはまだ有効なので、login.getUsername()を使用することができます。& login.getPassword()

+0

私はそのように設定されていることを知っています。ログインフォームがすぐに閉じると、メインフォームで知る必要があります。 – Spedwards

+0

正確に何を達成しようとしていますか? clickイベントのShowDialogから戻ると、フラグを設定して値をMainWindowに戻すことができます。 – PaulF

0

30分の検索でそれを見つけ出しました。

LoginフォームのボタンにDialogResultプロパティを追加することで、フォームがいつ閉じるかを確認することができました。多くのウィンドウで

private void mnitLogin_Click(object sender, EventArgs e) { 
    Login login = new Login(); 
    if (login.ShowDialog() == DialogResult.OK) { 
     // Do stuff 
     loginToAPI(login.getUsername(), login.getPassword()); 
    } 
} 
0

は次のように、私が今まで私たちは、アプリケーション全体に共通するいくつかのデータを格納するための静的またはシングルトンクラスを持っていた働いてきたプロジェクトを構成する:私は少し形が同様に開かれた方法を変更しなければなりませんでした:

public class SessionInfo 
{ 
    public static SessionInfo instance; 

    public static SessionInfo GetInstance(); 
    {   
     if(instance == null) 
      instance = new SessionInfo(); 

     return instance;   
    } 

    public string UserName {get; set;} 
    public string[] UserRoles {get; set;} 
} 
関連する問題