Получите данные в dataGridView в форме, введя данные в другой форме - PullRequest
0 голосов
/ 14 февраля 2020

У меня 3 формы InventoryManagementForm, PurchaseEntryForm и SalesEntryForm. InventoryManagementForm имеет 2 кнопки Purchase и Sales, которые перемещаются на PurchaseEntryForm и SalesEntryForm соответственно. В PurchaseEntryForm есть ComboBoxList, который открывает список товаров, и NumericUpDown, используемый для подсчета количества покупаемых товаров. При нажатии Buy Now ProductID, ProductName и Quantity должны быть добавлены к SalesEntryForm. Я печатаю SelectedItem из ComboBoxList и Quantity из NumericUpDown в консоли по Console.WriteLine, и она напечатана правильно. Но после выполнения метода Add(), который добавляет значения к DataGridView, данные не добавляются и, возможно, они равны нулю. Что делать, чтобы данные добавлялись в DataGridView?

Код For PurchaseEntryForm:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class PurchaseEntryForm : Form
    {
        // Initializing dictionary
        Dictionary<int, string> productDetails;

        // For counting product id, unique every time if someone adds a data
        private static uint _productID;

        // Reference for SalesEntryForm
        SalesEntryForm salesEntryForm = new SalesEntryForm();

        ProductDetails product;

        public PurchaseEntryForm()
        {
            InitializeComponent();
        }

        public PurchaseEntryForm(SalesEntryForm salesEntryForm)
        {
            InitializeComponent();
            this.salesEntryForm = salesEntryForm;
        }

        // Adding products on loading form
        private void PurchaseEntryForm_Load(object sender, EventArgs e)
        {
            productDetails = new Dictionary<int, string>();
            productDetails.Add(1, "CPU");
            productDetails.Add(2, "Monitor");
            productDetails.Add(3, "Keyboard");
            productDetails.Add(4, "Mouse");
            productDetails.Add(5, "Headphones");

            foreach (KeyValuePair<int, string> pair in productDetails)
            {
                ListOfProductsCmb.Items.Add(pair.Value);
            }
        }

        private void BuyNowBtnHover(object sender, EventArgs e)
        {
            BuyNowBtn.BackColor = Color.AliceBlue;
        }

        private void BuyNowBtnLeave(object sender, EventArgs e)
        {
            BuyNowBtn.BackColor = Color.FromArgb(249, 249, 251);
        }

        private void BuyNowBtn_Click(object sender, EventArgs e)
        {
            _productID++;

            product = new ProductDetails
            {
                ProductID = _productID,
                ProductName = ListOfProductsCmb.SelectedItem.ToString(),
                Quantity = int.Parse(ProductQuantityNud.Value.ToString())
            };

            salesEntryForm.ProductDetailsDgv.Rows.Add(new object[] { product.ProductID,
                                                       product.ProductName, product.Quantity });

            Close();
        }
    }
}

Код For InventoryManagementForm:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class InventoryManagementForm : Form
    {
        SalesEntryForm salesEntryForm;
        public InventoryManagementForm()
        {
            InitializeComponent();
        }

        private void PurchaseEntryBtn_Hover(object sender, EventArgs e)
        {
            PurchaseEntryBtn.BackColor = Color.AliceBlue;
        }

        private void PurchaseEntryBtn_Leave(object sender, EventArgs e)
        {
            PurchaseEntryBtn.BackColor = Color.FromArgb(249, 249, 251);
        }

        private void SalesEntryBtn_Hover(object sender, EventArgs e)
        {
            SalesEntryBtn.BackColor = Color.AliceBlue;
        }

        private void SalesEntryBtn_Leave(object sender, EventArgs e)
        {
            SalesEntryBtn.BackColor = Color.FromArgb(249, 249, 251);
        }

        private void PurchaseEntryBtn_Click(object sender, EventArgs e)
        {
            PurchaseEntryForm purchaseEntryForm = new PurchaseEntryForm();
            purchaseEntryForm.Show();
        }

        private void SalesEntryBtn_Click(object sender, EventArgs e)
        {
            salesEntryForm = new SalesEntryForm();
            salesEntryForm.Show();
        }


    }
}

код для SalesEntryForm:

using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class SalesEntryForm : Form
    {
        public SalesEntryForm()
        {
            InitializeComponent();
        }

        private void SalesEntryForm_Load(object sender, EventArgs e)
        {

        }
    }
}

InventoryManagementForm:PurchaseEntryFormSalesEntryForm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...