-1

私のプログラムには、他のサブフォームからの値のリポジトリを保持するメイン フォームがあります。何らかの理由で、サブフォームでエラーが発生しています:

非静的フィールドにはオブジェクト参照が必要です

これは私のメインフォームです:

public partial class frm_SystemLog : Form
{
    public frm_SystemLog()
    {
        InitializeComponent();
    }

    public string TextBoxValue
    {
        // suppose to get value from other forms
        get { return this.textBox1.Text; }
        set { textBox1.Text = value; }
    }   

    private void frm_SystemLog_Load(object sender, EventArgs e)
    {
        Log frm_LoginMenu = new Log();
        frm_LoginMenu.ShowDialog();
    }
}

これは私のサブフォームです:

public partial class Log : Form
{
    public Log()
    {
        InitializeComponent();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        // this is where the error happens
        frm_SystemLog.TextBoxValue = "SomeValue";
        this.Close();
    }
}
4

3 に答える 3

1

ログフォームにプロパティを作成し、アクセス時にその値を設定する必要があります

//in log form 
public String MyValue{get;set;}

次に、ログフォームのbutton2のプロパティでdialogresultを選択し、それをokに設定してから、button2のクリックイベントで

 private void button2_Click(object sender, EventArgs e)
    {
        MyValue = "SomeValue";
        //no need to close ,dialogresult will do it...

    }

次に、 frm_SystemLog フォームでこれを行います

private void frm_SystemLog_Load(object sender, EventArgs e)
    {

        Log frm_LoginMenu = new Log();
        frm_LoginMenu.ShowDialog();
        if(frm_LoginMenu.ShowDialog() == DialogResult.OK)
        {
            this.TextBoxValue = frm_LoginMenu.MyValue;
        }

    }

これで問題が解決するはずです。

于 2013-06-22T02:13:28.213 に答える
0

frm_SystemLog.TextBoxValuebutton2_Clickは別のクラスにあるため、 からアクセスできません。

于 2013-06-22T01:59:44.703 に答える