额 我知道了 这个问题你思路是对了 但是写错了 你看, 你现在Form1(1)里面实例化了Class1的对象 然后又在Class1里面重新实例化Form1(2)的对象 但是你要知道这个时候Form1(1)和Form1(2)是两个对象 他们是不想相等的 就好比我和你 虽然都是人 但我们不相等。 你本来有一个Form1了 但是当你调用Class1 的时候又重新“建造”了一个Form1 他们两个不是同一个东西!!!
解决方法 : 重写Class1的构造方法 给它一个参数 参数是一个Button按钮
然后在Form1实例化Class1的时候 把那个button放在里面就好了
把form1作为参数传给class1,而不是重新定义一个,如下代码
public partial class Form1 : Form
{
Class1 c;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
c = new Class1(this);
c.aa();
}
}
//Class1
public class Class1
{
public Class1(Form1 f)
{
f1=f;
}
Form1 f1;
public void aa()
{
f1.button1.Enabled = true;
}
}
你又定义了一个form1的实例...
改成
public class Class1
{ public void aa(Button btn)
{
btn.Enabled = true;
}
}
调用的时候直接把button当参数传进去
c = new Class1();
c.aa(button1);
类中的f1 是你自己定义的 不是窗体 form1 啊 ,这个问题你只要在窗体中定义一个方法就行了。不要搞得那么复杂!
因为你的类中的Form1跟你窗体的form1不是同一个对象,你在下面的类中用f1.Show();就知道了