C# 使用表单 2 访问表单 1 中的变量
C# access variable from form 1 with form 2
我想从表格 1 到表格 2 访问变量等,我有一个主表格,然后打开另一个带有一些指标的表格,一个计时器在表格 2 中不断滚动以检查表格 1 中的变量和列表以及灯或使指标变暗。
但是我得到 "Stack overflow exeption" se picture
这是代码:
public partial class Form1 : Form
{
Diagnostik formDiagnostics = new Diagnostik();
打开表单 2 的按钮:
private void buttonDiagnostics_Click(object sender, EventArgs e)
{
formDiagnostics.Show();
}
表格 2:
public partial class Diagnostik : Form
{
Form1 form1 = new Form1();
计时器:
private void updateGUI_Tick(object sender, EventArgs e)
{
if (Convert.ToBoolean(form1.ListServo1Inputs[0]) == true) { indicatorS1Di1.BackColor = Color.Green; }
else { indicatorS1Di1.BackColor = Color.Gray; }
Error screen dump picture
在屏幕截图上,我看到您正在 Diagnostik 表单构造函数中创建 Form1。同时,您正在 Form1 构造函数中创建诊断表单。所以可能你只是在这里遇到了一个无限循环。
您需要将 form1 传递到 formDiagnostics 的构造函数中:
public partial class Form1 : Form
{
private Diagnostik formDiagnostics;
public Form1()
{
formDiagnostics = new Diagnostik(this);
}
在 Diagnostik 构造函数中,将 Form1 参数存储到 field/property:
public partial class Diagnostik : Form
{
private Form1 form1;
public Diagnostik(Form1 form1)
{
this.form1 = form1;
}
然后您可以访问您的私人 Diagnostik.form1 字段:
private void updateGUI_Tick(object sender, EventArgs e)
{
if (Convert.ToBoolean(form1.ListServo1Inputs[0]) == true) { indicatorS1Di1.BackColor = Color.Green; }
else { indicatorS1Di1.BackColor = Color.Gray; }
我想从表格 1 到表格 2 访问变量等,我有一个主表格,然后打开另一个带有一些指标的表格,一个计时器在表格 2 中不断滚动以检查表格 1 中的变量和列表以及灯或使指标变暗。 但是我得到 "Stack overflow exeption" se picture
这是代码:
public partial class Form1 : Form
{
Diagnostik formDiagnostics = new Diagnostik();
打开表单 2 的按钮:
private void buttonDiagnostics_Click(object sender, EventArgs e)
{
formDiagnostics.Show();
}
表格 2:
public partial class Diagnostik : Form
{
Form1 form1 = new Form1();
计时器:
private void updateGUI_Tick(object sender, EventArgs e)
{
if (Convert.ToBoolean(form1.ListServo1Inputs[0]) == true) { indicatorS1Di1.BackColor = Color.Green; }
else { indicatorS1Di1.BackColor = Color.Gray; }
Error screen dump picture
在屏幕截图上,我看到您正在 Diagnostik 表单构造函数中创建 Form1。同时,您正在 Form1 构造函数中创建诊断表单。所以可能你只是在这里遇到了一个无限循环。
您需要将 form1 传递到 formDiagnostics 的构造函数中:
public partial class Form1 : Form
{
private Diagnostik formDiagnostics;
public Form1()
{
formDiagnostics = new Diagnostik(this);
}
在 Diagnostik 构造函数中,将 Form1 参数存储到 field/property:
public partial class Diagnostik : Form
{
private Form1 form1;
public Diagnostik(Form1 form1)
{
this.form1 = form1;
}
然后您可以访问您的私人 Diagnostik.form1 字段:
private void updateGUI_Tick(object sender, EventArgs e)
{
if (Convert.ToBoolean(form1.ListServo1Inputs[0]) == true) { indicatorS1Di1.BackColor = Color.Green; }
else { indicatorS1Di1.BackColor = Color.Gray; }