C#保持值的全局/公共变量

本文关键字:变量 全局 | 更新日期: 2024-09-24 14:02:07

我有一个新手问题!

我有3个窗口窗体,例如命名为frmMain、frmSub1和frmSub2。我想要一个int变量,它从frmSub或frmSub2中的进程中获取值,然后在frmMain中用于另一个进程。

在发布这篇文章之前,我探索了其他QA。但没有一个能满足我的好奇心。我只是看到了一堆代码,但我想用代码来解释它们为什么/如何工作。

非常感谢您的建议。

编辑:

我根本没有这个查询的代码。目前还没有申请。我正处于计划阶段。抱歉"没有给出代码"。我可以在到达需要这个变量的阶段后编写代码。

C#保持值的全局/公共变量

您可以这样做:

public class frmMain
{
    public static int Vartoshare=100;

    private void setvalues()
    {
        vartoshare=200;
    }
}

然后在你的frmsub2表格中,你可以调用

int readvar = frmmain.vartoshare;

解决方案1:您可以将int变量传递给New Form Constructor,并在NewForm构造函数中分配该值。

试试这个:

程序.cs

   static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1(0));
    }

Form1代码:

    int no = 10;
    public Form1(int no)
    {
        this.no=no;
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {            
        Form2 form2 = new Form2(no);
        this.Hide();
        form2.ShowDialog();            
    }

表格2:代码

    int no;
    public Form2(int no)
    {
        this.no = no;
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        no = 20;           
        Form1 form1 = new Form1(no);
        this.Hide();
        form1.Show();
    }

解决方案2:您可以在Form1中使用public static变量,并使用其类名以chid形式访问该变量。

试试这个:

Form1代码:

    public static int no = 10;
    public Form1()
    {            
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {            
        Form2 form2 = new Form2();
        this.Hide();
        form2.ShowDialog();            
    }

表格2:代码

    public Form2()
    {
        InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Form1.no = 20; //access Form1 int variable      
        Form1 form1 = new Form1(no);
        this.Hide();
        form1.Show();
    }