首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从表单1到表单2的C#访问变量

从表单1到表单2的C#访问变量
EN

Stack Overflow用户
提问于 2018-03-08 16:33:16
回答 2查看 599关注 0票数 0

我想访问变量,比如从表格1到表格2,我有一个主表单,然后打开另一个主表单,一个计时器在表2中滚动,检查变量和表1中的变量和列表,并使指示器变暗或变暗。但是我得到了“堆叠溢出”的图片

这是代码:

代码语言:javascript
复制
public partial class Form1 : Form
{
    Diagnostik formDiagnostics = new Diagnostik();

打开表格2的按钮:

代码语言:javascript
复制
private void buttonDiagnostics_Click(object sender, EventArgs e)
    {

        formDiagnostics.Show();
    }

表格2:

代码语言:javascript
复制
public partial class Diagnostik : Form
{
    Form1 form1 = new Form1();

定时器:

代码语言:javascript
复制
private void updateGUI_Tick(object sender, EventArgs e)
    {
        if (Convert.ToBoolean(form1.ListServo1Inputs[0]) == true) { indicatorS1Di1.BackColor = Color.Green; }
        else { indicatorS1Di1.BackColor = Color.Gray; }

错误屏幕转储图片

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-08 16:39:04

您需要将form1传递给formDiagnostics的构造函数:

代码语言:javascript
复制
public partial class Form1 : Form
{
    private Diagnostik formDiagnostics;

    public Form1()
    {
        formDiagnostics = new Diagnostik(this);
    }

在Diagnostik构造器中,将Form1参数存储到字段/属性中:

代码语言:javascript
复制
public partial class Diagnostik : Form
{
    private Form1 form1;

    public Diagnostik(Form1 form1)
    {
        this.form1 = form1;
    }

然后您可以访问您的私有Diagnostik.form1字段:

代码语言:javascript
复制
private void updateGUI_Tick(object sender, EventArgs e)
{
    if (Convert.ToBoolean(form1.ListServo1Inputs[0]) == true) { indicatorS1Di1.BackColor = Color.Green; }
    else { indicatorS1Di1.BackColor = Color.Gray; }
票数 0
EN

Stack Overflow用户

发布于 2018-03-08 16:35:53

在屏幕截图中,我看到在Diagnostik表单构造函数中创建Form1。同时,在Form1构造函数中创建诊断表单。所以也许你在这里有一个无穷无尽的循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49178037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档