在我的Windows窗体应用程序中,我试图将其中一个值传递给另一个窗体但是当代码到达另一个窗体时,当我使用断点时,该值显示为null。
在Form1中,我有一个生成OrderNumber的方法,Form1本身以及Form2正在使用此订单号。如果我从Form2调用Form1.OrderNumber,它将生成不同的订单号。我希望两个表格都应该有相同的订单号。
所以在Form1中我将全局变量声明为
public string ord;
现在,这个“ord”变量从Form1中的以下方法获取其值。
public string orderNumber()
{
string ord = "ORD" + DateTime.Now.Year + get_next_id();
return ord;
}
其中get_next_id是另一种根据数据库中前一个数字生成数字的方法。
现在在form1中,当我在下面的代码中使用“ord”变量值时,该值为null。
InsertUser(maskedTextBox1.Text, comboBox1.Text, maskedTextBox2.Text, maskedTextBox3.Text, maskedTextBox4.Text, maskedTextBox5.Text,
maskedTextBox6.Text, maskedTextBox7.Text, maskedTextBox8.Text, maskedTextBox9.Text, listItems, DateTime.Now, maskedTextBox10.Text, ord, get_next_id());
}
同样在form2中也会发生。
我不确定我错在哪里。 我之前也发过这个问题,但没有得到任何有用的答案。 请帮忙..
要将“ord”的值传递给form2,我将在表单1中调用此代码。
SaveAllListItems();
//this.Close();
PrintOrder m = new PrintOrder(ord);
m.Show();
其中PrintOrder是form2
答案 0 :(得分:2)
现在这个“ord”变量从以下方法中获取其值 Form 1中。,
它不是,你在方法中再次定义一个局部变量,你没有在你的方法中设置类级变量。
public string orderNumber()
{
string ord = "ORD" + DateTime.Now.Year + get_next_id();
^^^^^^^^^^
//indicating a local variable, not class level
return ord;
}
应该是:
public string orderNumber()
{
ord = "ORD" + DateTime.Now.Year + get_next_id();
return ord;
}
答案 1 :(得分:1)
public static string ord;
简单地使用了static关键字。 Static关键字的优势。
答案 2 :(得分:0)
而不是
string ord = "ORD" + DateTime.Now.Year + get_next_id();
使用
ord = "ORD" + DateTime.Now.Year + get_next_id();
答案 3 :(得分:0)
这是因为在下面的代码中,您声明了一个名为ord的新局部变量。
public string orderNumber()
{
string ord = "ORD" + DateTime.Now.Year + get_next_id();
return ord;
}
要使其正常工作,请将上述功能更改为:
public void OrderNumber()
{
ord = "ORD" + DateTime.Now.Year + get_next_id();
}
OrderNumber
无需返回值,因为无论如何您将使用ord
。
OrderNumber
的值之前,需要调用 ord
。当您最初声明ord
时,该值为null。调用OrderNumber
会将其值从null更改为您喜欢的任何值。