C# как автоматически вставлять и показывать данные из form2 в form1(datagridview) не закрывая диалог form2
У меня есть 2winFirm,1winform есть datagriedview,который показывает добавленные элементы, я открываю winform2 для добавления и нажимаю кнопку Добавить.Я хочу показать эту добавленную информацию в datagridview и добавить еще раз(не закрывать winform2), как я могу это сделать,что мне для этого нужно.Он добавляется только тогда, когда я закрываю диалог(winform2)
Что я уже пробовал:
winform2:
public partial class NewBuy : Form { DB db = new DB(); List<product> prod = new List<product>(); public NewBuy() { InitializeComponent(); System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone(); customCulture.NumberFormat.NumberDecimalSeparator = "."; System.Threading.Thread.CurrentThread.CurrentCulture = customCulture; } private void btnOk_Click(object sender, EventArgs e) { if (Convert.ToDecimal(txtPriceBuy.Value) > Convert.ToDecimal(txtPriceSell.Value)) { MessageBox.Show("Wrong price"); return; } else if (!string.IsNullOrEmpty(txtProduct.Text) ||!string.IsNullOrEmpty(txtPriceBuy.Text) || !string.IsNullOrEmpty(txtPriceSell.Text) || !string.IsNullOrEmpty(txtQuantity.Text)) { Product p = new Product { NameProduct = txtProduct.Text, PriceBuy = txtPriceBuy.Value, PriceSell = txtPriceSell.Value }; // List<product> check = new Buy().GetListProducts().FirstOrDefault(x => x.ProductName == lisprod.ProductName); prod.Add(p); Close(); } else { MessageBox.Show("Fill all fields"); } } public List<product> GetProduct() { // this.ShowDialog(); return prod; }
winform1:
public partial class BuySoldOperations : Form { List<product> listprod = new List<product>(); DB db = new DB(); int type = -1; public BuySoldOperations(int b) { InitializeComponent(); dgListProducts.AutoGenerateColumns = false; type = b; } private void btnNewBuy_Click(object sender, EventArgs e) { if (type == 1) { NewBuy s = new NewBuy(); s.ShowDialog(); List<product> newProd = s.GetProduct(); foreach (var p in newProd) { Product exist = listprod.FirstOrDefault(x => x.NameProduct == p.NameProduct); listprod.Add(p); } dgListProducts.DataSource = null; dgListProducts.DataSource = listprod; GetSum(); } else if (type == 2) { NewSold s = new NewSold(); s.ShowDialog(); } }
Richard MacCutchan
Диалоговое окно должно быть закрыто, прежде чем вы сможете обновить основную форму. Альтернативой является использование Show()
скорее, чем ShowDialog()
на форме 2.
Member 13875883
Большое спасибо