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 回答