2012-02-18 8 views
2

私は、WinFormsアプリケーションで、プロジェクトのすべてのフォームが必要に応じて値を格納して取得するためにアクセスできる一般的な変数を格納するプロパティクラスを用意したいと考えています。インスタンス化を使用せずに他のクラスからプロパティクラスにアクセスできますか?

これまでは静的クラスを使用して文字列やint値などを格納していましたが、これらはコーディング時に固定されており、アプリケーションの実行中は変更できません。私は同じ方法でプロパティクラスを使用したいと思うので、可能ならば、私はの書き込み機能を読んでいたはずです。

Form1.csでプロパティクラスのインスタンスを作成し、それをプロパティクラスのフィールドにアクセスするために他のフォームのコンストラクタのパラメータとして渡す必要がありますか?

これをインスタンス化せずに行うことはできますか?

+0

'appconfig'は、データのためのより良い場所のように聞こえます。 – gdoron

答えて

4

私が正しくあなたを理解している場合 - あなたは違った何かをする必要はありません。あなたはすることができます実行中にそれらを変更します。

static class ForAll 
{ 
    public static int i; 
} 

をし、それを使用します:

あなたが持つことができる

ForAll.i = 1; 
+1

+1 OPが読み取り専用またはconstで混乱している可能性があります。 – NPSF3000

+0

@ispiro&NPSF3000 - 確かに私は混乱していました。私はちょうど2つの形式の間で少しテストを試みた、それは完全に動作します。両方ともお手伝いしてくれてありがとう。 –

1

シンプルな回答です。はい、クラスのインスタントを送信する必要があります。
静的でないプロパティまたはメソッドは、クラスを実行することなく使用することはできません。

とにかくappconfigは、データのよりよい場所のように聞こえる。

+0

あなたのクイック返信、gdoronありがとう。私は趣味のコーダーです、あなたはappconfigの使い方について詳しく説明できますか?私は前にそれに遭遇したことはありませんあなたは私にその使用例を教えてもらえますか? –

+1

@ TheThing。ちょうどGoogleの 'app.config'チュートリアル。 – gdoron

+0

@ TheThing。 [this](http://www.dotnetspider.com/tutorials/AspNet-Tutorial-AspNet-Tutorial-27.aspx)非常に基本的なチュートリアルを読む – gdoron

0

各フォームにクラスを渡す代わりに、シングルトンパターンを使用することをお勧めします。

using System; 

public class Singleton 
{ 
    private static Singleton instance; 

    private Singleton() {} 

    public static Singleton Instance 
    { 
     get 
     { 
     if (instance == null) 
     { 
      instance = new Singleton(); 
     } 
     return instance; 
     } 
    } 
} 

これにより、クラスのインスタンスが同じであることが保証され、そのクラスを他のフォームと共有することができます。クラスを他のフォームに渡すとかなり面倒なことがあります。

http://msdn.microsoft.com/en-us/library/ff650316.aspx

+0

これをもっと理解するのに助けが必要な場合は教えてください。私は助けてくれるでしょう:) –

+0

Micah、これを使って複数のクラスにまたがって値を格納したり取得したりする方法を私には分かりません。シナリオ –

関連する問題