C#:从类中修改表单控件

时间:2012-06-30 12:00:11

标签: c# winforms class inheritance controls

我有这样的表格和类:

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

所以,最后我想改变控制值而不会出现错误。

3 个答案:

答案 0 :(得分:2)

您需要为表单指定引用。像这样:

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

答案 1 :(得分: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";
    }
}

答案 2 :(得分:1)

使用以下代码行:

    ALTER A = new ALTER();
    A.F = this ;
    A.ALTER();