Member 13875883 Ответов: 0

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

Большое спасибо

0 Ответов