我是c#和visual studio的新手,但不是一般的编程。 我在3天内搜索了我的问题的答案,我发现了很多,但是出于一些奇怪的原因(我确定我错过了一些非常明显的东西)我无法让它发挥作用。 我认为这是像我这样的新手问题。 我有一个表单(Form3),带有一个文本框和一个按钮(我设置它只是为了测试目的)。 我想从另一个类填充和阅读此文本框。我知道最合适的方法是使用GET和SET访问器在Form3.cs中创建一个属性。我做到了但我无法让它发挥作用。我没有收到任何错误消息,但我也无法设置文本框的值。它只是空白。 这是我的示例代码:
namespace WindowsFormsApplication1
{
public partial class Form3 : Form
{
public string setCodes
{
get { return test1.Text; }
set { test1.Text = value; }
}
public Form3()
{
InitializeComponent();
}
private void Form3_Load(object sender, EventArgs e)
{ }
private void button1_Click(object sender, EventArgs e)
{
a.b();
}
}
public class a
{
public static void b()
{
Form3 v = new Form3();
v.setCodes = "abc123";
}
}
}
有人可以帮我解决这个问题吗?
答案 0 :(得分:5)
问题是您要将值设置为表单的新实例。尝试这样的事情:
public partial class Form3 : Form {
public string setCodes
{
get { return test1.Text; }
set { test1.Text = value; }
}
private A a;
public Form3()
{
InitializeComponent();
a = new A(this);
}
private void button1_Click(object sender, EventArgs e)
{
a.b();
}
private void Form3_Load(object sender, EventArgs e)
{
}
}
public class A
{
private Form3 v;
public a(Form3 v)
{
this.v = v;
}
public void b()
{
v.setCodes = "abc123";
}
}
答案 1 :(得分:2)
您正在创建品牌new Form3()
实例
这不会影响现有表格。
您需要将表单作为参数传递给方法。
答案 2 :(得分:2)
试试这个:
public partial class Form3 : Form
{
/* Code from question unchanged until `button1_Click` */
private void button1_Click(object sender, EventArgs e)
{
a.b(this);
}
}
public class a
{
public static void b(Form3 form3)
{
form3.setCodes = "abc123";
}
}
这会将表单的当前实例传递给另一个类,以便它可以更新setCodes
属性。以前您正在创建一个新的表单实例,而不是更新当前的表单。
答案 3 :(得分:-2)
将表单实例发送到其他其他类
Form1 objForm1=new Form1();
obj.Validate(objForm1);
通过在表单(Designer.cs)中将控件Private
修改为Public
来轻松访问其他类中的控件