0

私はそのようなフォームとクラスを持っています:

namespace ALTER_Control
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ALTER A = new ALTER();
            A.ALTER();
        }
    }

    public class ALTER
    {
        public Form1 F;
        public void ALTER()
        {
            F.TextBox1.Text="I Altered That";
        }
    }
}

だから私は ALTER() を呼び出して Form1 の textbox1 値を変更しようとしましたが、そのエラーが発生しました:

object reference not set to an instance of an object

これは、Form1 コントロールにアクセスまたは変更している場合にのみ発生します。

ところで、textbox1修飾子をpublicに設定しました

それで、最後に、そのエラーを発生させずにコントロール値を変更したいと思います。

4

3 に答える 3

2

フォームへの参照を割り当てる必要があります。このような:

    private void button1_Click(object sender, EventArgs e)
    {
            ALTER A = new ALTER();
            A.F = this;
            A.ALTER();
    }
于 2012-06-30T12:04:59.293 に答える
2

なぜあなたのALTERクラス (これも素晴らしいクラス名ではありません) があなたのフォームについて知る必要があるのでしょうか?

    private void button1_Click(object sender, EventArgs e)
    {
        ALTER A = new ALTER();
        this.TextBox1.Text = A.ALTER();
    }
}

[...]

public class ALTER
{
    public String ALTER()
    {
        // Do your thing

        return "I Altered That";
    }
}
于 2012-06-30T12:07:19.460 に答える
1

次のコード行を使用します。

    ALTER A = new ALTER();
    A.F = this ;
    A.ALTER();
于 2012-06-30T12:06:30.587 に答える