2011-12-03 8 views
3

タイトルがはっきりしないかもしれないと私はそれについて謝罪します。 私はビジュアルスタジオで2つのフォームを持っており、最初のフォームではユーザーがシステムにログインし、2番目のフォームでは他のすべてが発生します。アプリケーションからクラスのインスタンスを実行する方法

私は、最初の形式でinfoというクラスを呼び出しました。このクラスは、ユーザーがシステムにログインするときにユーザー情報を収集し、ログインなどを確認する責任があります。ユーザーIDを取得し、プライベートストリング。そこからプログラムは第2の形式になります。

ここで私の質問ですが、このクラスをグローバルにすると、2番目のフォームから格納されたuserIDにアクセスできますか?クラスの別のインスタンスを作成することはできますか(info myinfo = new info())?

PS私はオブジェクト指向の新しい概念ですので、ユーザーは簡単に用語を入力してください。

+0

タイトルに「C#」というプレフィックスを付けないでください。それはタグのためのものです。 –

答えて

5

個人的には、グローバルに投票します。代わりに、私は通常以下のようにします:

フォーム1を呼び出すコードでは、フォームからプロパティを介してパラメータを取得します。 2番目のフォームのパラメータを介して2番目のフォームに渡します。

例えば:

void Main() 
{ 
    var form1 = new Form1(); 
    form1.ShowDialog(); 

    var info = form1.GetInfo(); 

    var form2 = new Form2(); 
    form2.SetInfo(info); 
    form2.ShowDialog(); 
} 

あなたが本当にグローバルなクラスを持つことを主張した場合、wsanville pointed outとして、Singleton patternをご覧ください。あなたは、あなたのアプリケーション全体であなたのクラスの1つのインスタンスにアクセスするためにSingleton patternを使用することができます

public sealed class Info 
{ 
    private static Info _instance; 
    private static readonly object _lock = new object(); 

    // Private to disallow instantiation. 
    private Info() 
    { 
    } 

    public static Info Instance 
    { 
     get 
     { 
      lock (_lock) 
      { 
       if (_instance==null) 
       { 
        _instance = new Info(); 
       } 
       return _instance; 
      } 
     } 
    } 
} 
+0

あなたは私にそれを行う方法の例を教えてもらえますか? –

+0

@AhouraGhotbiしました。 –

+0

ありがとう、それは良い解決策ですが、このクラスを(あなたがPHPでできるように)グローバルとしてすべてのフォームからアクセスする方法がありますか? –

2

:基本的にはおおよそ次のようになります。 C#での実装については、件名のJon Skeet's articleを参照してください。

関連する問題