У меня есть следующий статический метод, который добавляет выбранный продукт в заказ.
public static void addToOrderFromPicture(string product, string qty, string _price)
{
//I've cut the code as it's not important to the question.
order.Add(product);
}
Продукты отображаются в виде элементов управления на панели макета потока.Пользователь нажимает кнопку «Добавить в заказ» на элементе управления.Это активирует следующий метод.
private void btn_add_Click(object sender, EventArgs e)
{
if (Main.sessionInProgress == true)
{
OrderQty qty = new OrderQty(lbl_caseSize.Text.ToString(), lbl_wholesale.Text.ToString(), lbl_product.Text, lbl_volume.Text.ToString(), lbl_physical.Text, lbl_available.Text, lbl_oo.Text, lbl_inner.Text, lbl_pltQty.Text, lbl_repeat.Text);
qty.StartPosition = FormStartPosition.CenterParent;
DialogResult result = qty.ShowDialog();
if (result == DialogResult.Yes)
{
if (Main.roundCheck == true)
{
// MessageBox.Show(qty.qtyReturn.ToString());
qty.qtyReturn = autoRoundToCaseSize(qty.qtyReturn);
//MessageBox.Show(qty.qtyReturn.ToString());
Main.addToOrderFromPicture(lbl_product.Text.ToString(), qty.qtyReturn.ToString(), qty.priceReturn.ToString());
}
else
{
Main.addToOrderFromPicture(lbl_product.Text.ToString(), qty.qtyReturn.ToString(), qty.priceReturn.ToString());
}
btn_add.Text = "X";
btn_add.BackColor = Color.FromArgb(236, 112, 99);
}
}
}
Причина, по которой основная функция является статической, заключается в том, что я могу вызывать ее из этого метода.В Swift я бы использовал делегат для передачи данных между формами и т. Д. Однако я не уверен, как это сделать в C #.
Существует ли такой же способ передачи данных между формами, как в Swift.Как мне это сделать?Или есть способ для меня вызвать метод в Main без необходимости, чтобы он был статическим.
РЕДАКТИРОВАТЬ: Я не думаю, что я объяснил формы и т. Д. Очень хорошо, поэтому постараюсь очистить его,
Метод addToOrderFromPicture содержится в Main.Эта функция добавляет товары в список заказов, который также является статическим и содержится в Main.
Метод 'btn_add_Click' содержится в Product.cs, который является UserControl.Этот пользовательский элемент управления отображается на flowPanel, который находится в главной форме.
Таким образом, пользователь щелкает, активирует функцию в Product.cs, это создает экземпляр OrderQty.cs, который возвращает количество в Product.cs.- Из Product.cs вызывается метод addToOrder в Main, и ему передаются такие данные, как qty и т. Д.
So Product.cs -> OrderQty.cs -> Product.cs -> Main.cs