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; }