表单A打开表单B,形成A.visible = false;
表单A有一个public int变量,我需要表单B中的控件才能访问和修改此变量。可以这样做,因为通过构造函数传递值只是一种方式!
所以如果可以这样做,如果表格A不可见,那么仍然可以访问该值吗?
(表格b不应该是对话!)
非常感谢!编辑:我实际上并没有得到解释。到目前为止就是这样:
表格a:
//in global space
public int temp = 123;
//in form_load event
Form setup = new setup();
setup.Show();
this.Visible = false;
在表单设置中:
//in form_load event
textBox1.text = temp.toString();
//in button_press event
form a.temp = "456";
我希望我能清楚地解释我的立场!
答案 0 :(得分:4)
首先,在表格A的表格B中有成员字段:
private FormA parent;
第二,在形式B中有这样的构造函数:
public FormB(FormA parent)
: this()
{
this.parent = parent;
}
现在,当您创建表单B的实例时,将引用传递给正在运行的表单A实例:
FormB formB = new FormB(this);
formB.Show();
您可以通过parent
字段访问公共财产,例如
//inside Form B code..
public Foo()
{
parent.PUblicProp = "Hello";
}
答案 1 :(得分:1)
由于您的int
变量为public
,因此formB
中的控件可以访问和修改它,formA
可见性不会影响它,无论可见性如何都会被访问它:
FormA f = new FormA();
int newValue = f.yourintvariable;
还有很多替代方法,比如使用构造函数在FormA
构造函数中发送变量并从FormB
初始化它,
或者您可以将其定义为static
,但在这种情况下,将为所有形式的实例提供一个变量
答案 2 :(得分:1)
这是将值从一种形式传递到另一种形式的一种方式
public partial class Form2 : Form
{
public string MyProperty { get; set; }
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
label1.Text = MyProperty;
}
}
之后在Form1中的按钮单击事件处理程序中 添加以下代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.MyProperty = "This is from Form1";
form2.Show();
}
}