gpt4 book ai didi

c# - 将相同的方法值传递给多个表单

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:09 25 4
gpt4 key购买 nike

在我的窗口应用程序中,我有需要传递给另一个表单的 orderNumber。这个订单号是由我将在下面放置的代码生成的。我试图只将 1 个相同的订单号传递到两个位置,但不幸的是,两个不同的订单号传递到两个位置。我怎样才能让只有一个订单号被传递到两个位置。

生成订单号的代码:

public string orderNumber()
{
string ord = "ORD" + get_next_id() + DateTime.Now.Year;
return ord;

}

public int get_next_id()
{
OleDbConnection objConnection = null;
OleDbCommand objCmd = null;
String sql;
int res;

// Create and open the connection object
objConnection = new OleDbConnection(connString);

objConnection.Open();
sql = "SELECT IIF(MAX(Customer.NumGenerate) IS NULL,100,MAX(Customer.NumGenerate)) as v_max FROM Customer;";
objCmd = new OleDbCommand(sql, objConnection);
res = (int)objCmd.ExecuteScalar();
++res;
objConnection.Close();
return res;
}

在第一种形式中,以下插入方法使用订单号:

private void SaveAllListItems()
{
string listItems = string.Empty;
foreach (var listBoxItem in listBox1.Items)
{

listItems += listBoxItem.ToString();

if (listBox1.Items.IndexOf(listBoxItem) < listBox1.Items.Count - 1)
{
listItems += ", ";
}
}

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, orderNumber(), get_next_id());

;
}

在第二种形式中,我想使用与插入用户相同的订单号。现在我有以下代码无法正常工作,因为 form1 的订单号不同,而 form 2 的订单号不同。

 private void FindOrder()
{


Form1 m = new Form1();
string number = m.orderNumber();
// string number = "ORD1012013";

string InvSql = "SELECT (Customer.[Title] + SPACE(2) + Customer.[Customer's Name]) as CustomerName, Customer.[Customer's Ebayname], Customer.[Email Address], Customer.[Phone Number], (Customer.[Address 1] + SPACE(2) +Customer.[Address 2] + SPACE(2) + Customer.[City] + SPACE(2) + Customer.[Post Code]+ SPACE(2) + Customer.[Country]) as Address, Customer.[Item Purchased], Customer.[Purchased Date], Customer.[Total Price], Customer.[OrderNumber] FROM Customer WHERE Customer.[OrderNumber]= '" + number + "'";

OleDbConnection cnn = new OleDbConnection(connString);
OleDbCommand cmdOrder = new OleDbCommand(InvSql, cnn);
cnn.Open();

OleDbDataReader rdrOrder = cmdOrder.ExecuteReader();


rdrOrder.Read();
custName.Text = rdrOrder["CustomerName"].ToString();
ebayName.Text = rdrOrder["Customer's Ebayname"].ToString();
email.Text = rdrOrder["Email Address"].ToString();
phone.Text = rdrOrder["Phone Number"].ToString();
address.Text = rdrOrder["Address"].ToString();
item.Text = rdrOrder["Item Purchased"].ToString();
date.Text = Convert.ToString(Convert.ToDateTime(rdrOrder["Purchased Date"]));
price.Text = rdrOrder["Total Price"].ToString();
order.Text = rdrOrder["OrderNumber"].ToString();


rdrOrder.Close();
cnn.Close();
}

如何将相同的订单号传递到两个地点?

最佳答案

数据可以以不同的方式在表单之间传递。

这是一个很好的tutorial关于如何做到这一点。构造函数和属性方法更容易实现。

您似乎没有在 form1 类上保存 orderid

在 Form1 类上为 OrderID 声明一个变量

string OrderId;

修改现有方法

public string orderNumber()
{
OrderId = "ORD" + OrderId + DateTime.Now.Year;
}

然后按照构造函数方法将值传递给 PrintForm

再次在 PrintForm 类中为 orderID 声明一个变量

string OrderId;

将您的 PrintForm 构造函数更改为此

public PrintForm(string value)
{
InitializeComponent();
OrderId=value;
}

在 Form1 按钮点击事件上

private void button1_Click(object sender, System.EventArgs e)
{
PrintForm frm=new PrintForm(OrderId);
PrintForm.Show();
}

关于c# - 将相同的方法值传递给多个表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com