DataGridView
を入力しようとしています。私は静的クラスあるFileSystemWatcher
ハンドラでそれをやっているので、しかし、それは私にエラーを与える:静的メソッドでDataGridViewを設定する方法は?
An object reference is required for non-static field, method, or property
私はEventHandler
その後、非静的にクラスを変更した場合、同じエラーになります。私は現在ループにあり、解決策を見つけることができませんでした。この問題を解決するために私を助けてください。ここで
class FCheck
{
public static void tpCard_Created(object sender, FileSystemEventArgs e)
{
Console.WriteLine("ThreadId:" + Thread.CurrentThread.ManagedThreadId + " " + "File:" + e.FullPath);
if (Path.GetExtension(e.FullPath) == ".f")
{
// Do something....
Form1.populateTable(tp);
}
}
}
はメインのForm1です:
public void checkTPFiles()
{
FileSystemWatcher fw = new FileSystemWatcher(@"F:\tmp");
fw.Created += LSCheck.tpCard_Created;
fw.EnableRaisingEvents = true;
}
public static void populateTable(TpCard tpCard)
{
DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
row.Cells[1].Value = tpCard.FNumber;
dataGridView1.Rows.Add(row);
}
フォームのコントロールに書き込むには、フォームクラスのインスタンスを使用する必要があります。フォームは1つしかありませんが、私の2つのフォームプロジェクトを見れば助けになるかもしれません。 FCheckクラスは2番目のフォームに相当します。 http://stackoverflow.com/questions/34975508/reach-control-from-another-page-asp-net – jdweng
@jdwengもっと私を助けてくれますか?私はより良い理解のためにスニペットを書くことができますか? – goGud
私はrboeのようなソリューションを推薦します。しかし、私はあなたに良い答えを与えるためにプロジェクトの構造を見る必要があります。私はあなたの投稿されたコードからあなたのクラスの関係を知らない。フォームプロジェクトやコンソールプロジェクト、クラスのインスタンスがあるかどうかはわかりません。 – jdweng