我想从textbox.text
设置class1
,但是当我按下按钮时没有任何反应。怎么了?
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Class1 c;
private void button1_Click(object sender, EventArgs e)
{
c = new Class1();
c.x();
}
}
}
此代码来自class1
namespace WindowsFormsApplication1
{
class Class1
{
public static Form1 f;
public void x()
{
f = new Form1();
f.textBox1.Text = "hello";
}
}
}
我已将textBox1
修饰符更改为公开。
答案 0 :(得分:3)
执行f = new Form1()
时,您需要创建一个新表单。如果您已经有Form1
个实例打开,那么这将为您提供两个Form1
个实例。在其中一个上调用方法不会影响另一个方法。您必须将表单的引用传递给Class1
的实例,并在该引用上调用该方法。
有不同的方法可以做到这一点。可以将引用作为参数传递给x
方法:
public void x(Form1 f)
{
f.textBox1.Text = "hello";
}
当你致电x
时,你可以传递特殊变量this
,这是与代码相关联的对象。这会将您的Form1
实例传递给x
,以便x
可以使用它。
c.x(this);
答案 1 :(得分:1)
private void button1_Click(object sender, EventArgs e)
{
c = new Class1(this);
c.x();
}
class Class1
{
public static Form1 f;
public Class1(Form1 form)
{
f = form;
}
public void x()
{
f.textBox1.Text = "hello";
}
}
问题是您在x方法中创建了一个新的Form1实例。根据我的代码更改您的代码,它会起作用。