C#保持值的全局/公共变量
本文关键字:变量 全局 | 更新日期: 2024-09-24 14:02:07
我有一个新手问题!
我有3个窗口窗体,例如命名为frmMain、frmSub1和frmSub2。我想要一个int变量,它从frmSub或frmSub2中的进程中获取值,然后在frmMain中用于另一个进程。
在发布这篇文章之前,我探索了其他QA。但没有一个能满足我的好奇心。我只是看到了一堆代码,但我想用代码来解释它们为什么/如何工作。
非常感谢您的建议。
编辑:
我根本没有这个查询的代码。目前还没有申请。我正处于计划阶段。抱歉"没有给出代码"。我可以在到达需要这个变量的阶段后编写代码。
您可以这样做:
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();
}