私はデータベースにアクセスするためのプログラムを作成しています。エラーメッセージ "静的でないフィールド、メソッド、またはプロパティにオブジェクト参照が必要です。"
私の問題を引き起こしているコードは、ボタンを押したときに新しいフォームを開くためのものです。次に、メインフォームのリストボックスで選択した値に基づいてデータを取得し、そのデータをテキストボックスとラベルに配置するために2番目のフォームに送信する必要があります。
私が持っている問題は、「...オブジェクト参照が非静的フィールド、メソッドやプロパティのために必要とされる」ために、コードが
はエラーをスローせずに実行するためということ
です
私はセカンダリフォームのメソッドを静的にする必要があります。しかし、これは私が二次フォーム上のコントロールにアクセスすることを妨げる。
メインフォームコードスニペット:
private void MemView_Click(object sender, EventArgs e)
{
string selected = lstMember.SelectedItems[0].Text;
//MessageBox.Show(selected);
string[] data = P.selectMem(selected);
MessageBox.Show(data[0]);
MemForm mem = new MemForm(); //How to open a designed form
mem.Show(); //Displays the addmem form
MemForm.getData(data);
}
セカンダリフォームコードスニペット:
public void getData(string[] Data)
{
int index = 0;
bool loop = false;
string text;
while (loop == true)
{
if (index < 10)
{ text = "tb0" + index.ToString(); }
else
{ text = "tb" + index.ToString(); }
index = index + 1;
}
}
私の第二のコードスニペット私がすることなく、テキストボックスにすべてのデータを埋めるためにループを使用することを意味しています手動で各tb00.Text = data []などを書き出します。 C#のFindControls()メソッドにアクセスすることができません。これは、おそらく静的メソッドが必要なためです。 メインフォームで使用されるPクラスがSQLコードを実行し、完全に動作しています。
私は答えのための十分な情報を提供しようとしましたが、もっと多くの情報が必要な場合は、私が試してコメントをお願いします。 :)
デフォルトの文字列タイプの問題ではありませんか? 'string text;を' string text = String.Empty; 'に変更するとどうなりますか? –
メソッドを静的クラスメソッドとして呼び出すことになります。それをインスタンスメソッドとして呼び出す: 'mem.getData(data);'。フォローアップの問題が発生する可能性がありますが、一度に1つのステップを取る。 –
@ Phil P.それは解決しない、私はそれが簡単だったと思います。このエラーはGetData()メソッドが静的ではないために発生しますが、メソッドを静的メソッドに変更すると、MemFormのコントロールにアクセスできなくなります。 –