首页 > 解决方案 > 将父表单放在前面并维护来自子表单的列表计数

问题描述

我必须形成“SalesProduct”和“SearchProduct”。在“SalesProduct”表单中,当我单击 datagridview 单元格/列名“产品名称”时,datagridview 上会打开“SearchProduct”表单,在其中我从 datagridview 复选框按钮中搜索项目选择项目行,然后单击“选择”按钮,然后我希望它应该隐藏/关闭“SearchProduct”按钮并在父级“SalesProduct”表单中显示。

它还将列表中的数据从“searchProduct”表单获取到“SalesProduct”表单,并在“SalesProduct”表单中添加一行。当我再次单击“产品”列时,它将再次打开“searchProduct”表单并从中选择行,然后在单击“选择”按钮后关闭并在前面“SalesProduct”表单并在表单中添加这个新行,而不是删除我之前添加的其他行.

我的问题是,当“SearchProduct”表单关闭时,“SalesProduct”表单没有出现在前面,它正在打开新表单,并且它还删除了我之前放入“SalesProduct”表单的其他行。

我的代码如下。请帮助我如何保持计数并在不创建新实例的情况下引入前端父表单。

,,,,

public partial class SaleProduct_Form : Form
{
  public List<CommenValue_Class> value { get; set; } 

  public SaleProduct_Form()
  {
    InitializeComponent();
  }

 private void gridSalesProduct_CellEnter(
    object sender, 
    DataGridViewCellEventArgs e)
 {
   if (gridSalesProduct.CurrentCell.ColumnIndex == 1)
   {
     SearchProduct_Form searchProduct = new SearchProduct_Form();
     searchProduct.ShowDialog(this);
   }
 }

private void SaleProduct_Form_Load(
   object sender, 
   EventArgs e)
{
  addToGrid(value);                
}

public void addToGrid(List<CommenValue_Class> val)
{
  if (val != null)
  {

    foreach (CommenValue_Class item in val)
    {
      int n = gridSalesProduct.Rows.Add();    
      gridSalesProduct.Rows[n].Cells["ProductName"].Value = item.Product_Name;
      gridSalesProduct.Rows[n].Cells["Balance"].Value = item.Qty_Balance;
      gridSalesProduct.Rows[n].Cells["Rate"].Value = item.Rate;    
     }
    }
  }
}


public partial class SearchProduct_Form : Form
{
  public SearchProduct_Form()
  {
    InitializeComponent();
  }

  private void btnSelectProduct_Click(object sender, EventArgs e)
  {
    try
    {
      List<CommenValue_Class> CV = new List<CommenValue_Class>();

      foreach (DataGridViewRow item in gridProductList.Rows)
      {
        if (Convert.ToBoolean(item.Cells[0].Value))
        {
          CV.Add(new CommenValue_Class
          {
            Product_Name = item.Cells["Product_Name"].Value.ToString(),
            Qty_Balance = Convert.ToInt32( item.Cells["Balance_Qty"].Value.ToString()),
            Rate = Convert.ToDecimal (item.Cells["Per_Unit_Sale_Price"].Value.ToString())
          });
        }
      }

      SaleProduct_Form saleProduct = new SaleProduct_Form();
      saleProduct.value = CV;
      saleProduct.Show();
      this.Close();
    }
    catch (Exception ex)
    { 
      MessageBox.Show(ex.ToString()); 
    }
  }
}

标签: c#winforms

解决方案


推荐阅读