我必须创建一个程序,处理投诉我必须跟踪我完成这个过程的次数,这意味着当我返回到过程中的第一个表单时,我将需要一个计数增加,但是当数字总是重置时第一个表格打开
runNum设置为public int这是我自动输入数据的代码,然后在打开下一个表单之前增加runmber:
private void autoFill()
{
TitlePage titlepage = new TitlePage();
if (titlepage.getRun() == true)
{
int priority = runNum % 4;
if (priority == 0)
priority = 2;
txtDate.Text = DateTime.Today.ToString("dd/MM/yyyy");
txtRef.Text = (100 + runNum).ToString();
txtPriority.Text = priority.ToString();
txtCustName.Text = firstNames[runNum] + " " + secondNames[runNum];
txtCustAddress.Text = (runNum + 5).ToString() + " " + Address1[runNum] + " " + Address2[(runNum % 7)];
txtCustEmail.Text = firstNames[runNum] + secondNames[runNum] + "@" + ISP[(runNum % 10)] + "." + Suff[(runNum % 10)];
txtCustTel.Text = TelNo[runNum];
//TBD- fill this in with actual data
rtbComplaint.Text = "Complaint type, Sevarity, soultion exsiting, employee who dealt with complaint, Date";
rtbComplaint.Enabled = false;
txtPriority.Enabled = false;
txtDate.Enabled = false;
txtRef.Enabled = false;
txtCustName.Enabled = false;
txtCustName.Enabled = false;
txtCustEmail.Enabled = false;
txtCustAddress.Enabled = false;
txtCustTel.Enabled = false;
if (runNum % 2 == 0)
{
rdoNo.Checked = true;
enter code here }
else
{
rdoYes.Checked = true;
}
getTimer();
runNum++;
}
}
答案 0 :(得分:4)
在这种情况下,将始终重置public int。如果要全局访问变量,则应在父页面上声明静态int。但是要避免全局变量。而是尝试将迭代保存在一个中心点,例如数据库或文件,您可以从中检索值,甚至可以使用服务器缓存对象,您可以更新并从中再次获取值。
答案 1 :(得分:0)
我会使用静态变量,但请注意,如果重新启动appdomain或重新编译网页类,即使是静态变量也可以重置。
见 Lifetime of ASP.NET Static Variable
编辑:对不起,我认为这个问题是针对asp.net应用程序的。是不是这样?
如果它是一个正常的窗体,那么你需要将它存储在某个服务器端,无论是DB,服务器上的共享文件还是类似的东西