2016-08-13 8 views
0

自分でC#.netを教えるために取り組んでいるアプリケーションがあります。クラスを使用してプロジェクトを整理し、どこにでもコードをコピー/ペーストする必要がなくなりました。c#プロジェクト内のすべてのクラスからDataTableにアクセスする(プロパティを使用)

私のメインフォームには、ログエントリを出力するためのコンソールとして使用するDatalistビューがあります。

public DataTable DTLog = new DataTable(); 

public void BuldDTLog() 
     { 
      DTLog.Columns.Add("Time"); 
      DTLog.Columns.Add("Type"); 
      DTLog.Columns.Add("Level"); 
      DTLog.Columns.Add("Text"); 
     } 

     public void AppendtoLog(String Level, String Type, String Text) 
     { 

      DTLog.Rows.Add(DateTime.Now, Level, Type, Text); 

     } 

私はDataTableの 私はその後、AppendtoLogを呼び出す(「1」、「情報を構築し、私のfrmMainからBuildDtLog()を呼び出します。

私は、次の持っている「ロガー」というクラスを作りました"、"これはテストログエントリです "); frmMainのボタンから入力し、エントリがデータテーブルに追加されます。

私の問題は、別のクラスのデータテーブルにエントリを追加するときです。 AppendtoLogの "オブジェクト参照がオブジェクトのインスタンスに設定されていません"が表示されます。 - データテーブルがもう存在しないかのように?

私はプロパティを見てきました。私はいくつかの例を実践していますし、それらがどのように機能し、この状況で私を助けてくれるのか理解していますが、私は本当に状況。助けてもらえますか?

おかげ

答えて

0

ログクラスとその機能は、静的にし、これは完璧なおかげで、任意のクラスから

public static logger 
{ 
public DataTable DTLog = new DataTable(); 

public static void BuldDTLog() 
     { 
      DTLog.Columns.Add("Time"); 
      DTLog.Columns.Add("Type"); 
      DTLog.Columns.Add("Level"); 
      DTLog.Columns.Add("Text"); 
     } 

     public static void AppendtoLog(String Level, String Type, String Text) 
     { 

      DTLog.Rows.Add(DateTime.Now, Level, Type, Text); 

     } 
} 

public class otherClass 
{ 
logger.BuldDTLog(); 
logger.AppendtoLog(param1,param2,param3); 
} 
+0

をその関数を呼び出して、私はちょうどそれを実装し、それは私がそれをする必要が正確にどのように動作します。 – Element

+0

ロガークラスのメソッドをプライベートにすると、常にロガークラスによって呼び出されるようにすることができます –

+0

コードをお楽しみください –

関連する問題