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

时间:2013-12-14 18:51:56

标签: c# variables

我有一个新手问题!

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

我在发布之前探讨了其他QA。但他们都没有满足我的好奇心。我刚看到一堆代码,但我想要一个有意义的explonation代码,为什么/如何工作。

非常感谢您的建议。

修改:

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

2 个答案:

答案 0 :(得分:0)

你可以这样做:

public class frmMain
{
    public static int Vartoshare=100;


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

然后在你的frmsub2表格中你可以打电话

int readvar = frmmain.vartoshare;

答案 1 :(得分:0)

解决方案1:您可以将int变量传递给新表单Constructor,并在NewForm构造函数中指定该值。

试试这个:

Program.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 :您可以在public中使用static Form1变量,并使用其类名以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();
    }