将表单2中的文本框值传递给C#中表单1中的数据网格

时间:2018-02-22 03:57:03

标签: c#

我有两个表格(表格“销售订单”和表格“插入明细文件”)。在表单“销售订单”中,我已将一些值插入到多个对象中,请参阅以下屏幕截图:

enter image description here

为标题文档插入一些值后,接下来我要通过单击“销售订单”表单中的“添加”按钮插入详细信息文档。

单击该按钮后将显示“插入详细信息文档”表格,请参阅以下屏幕截图:

enter image description here

我在“插入详细信息文档”中的所有对象中插入了所有值。我需要通过单击此表单的“添加”按钮,在“表单”中的“数据网格视图”中显示此表单中的所有值。因此,Form将显示​​如下屏幕截图:

enter image description here

有谁知道如何提供这种条件? 感谢。

2 个答案:

答案 0 :(得分:1)

        public class Product_List {
            public string Branch { get; set; }
            public string InvetoryID { get; set; }
            public string Warehouse { get; set; }
            public string Quantity { get; set; }
            public string Unit { get; set; }

        }
     public partial class Insert_Detail : Form
        {
            public DataTable Grid_Product = new DataTable();
            List<Product_List> productlist = new List<Product_List>();
             private void Add_Click(object sender, EventArgs e)
            {
                pcmn.cmn_DT.Clear();
                Grid_Product.Clear();            


                        productlist.Add(new Product_List
                        {
                            Branch = txt_Branch.Text,
                            InvetoryID =  ddlInvetoryID.SelectedValue.ToString(),
                            Warehouse = ddlWarehouse.SelectedValue.ToString(),
                            Quantity = txt_Quantity.Text,
                            Unit = txt_Unit.Text,

                        });


                Grid_Product = ToDataTable(productlist);
                                this.Close();
            }
        }


         public partial class SalesOrder : Form
        {
         public void AddItem_Click(object sender, EventArgs e)
            {
        POS_ITEM_Details popup = new POS_ITEM_Details();

                                popup.ShowDialog();
                                foreach (DataRow row in popup.Grid_Product.Rows)
                                {
        SalesOrder_Grid.Rows.Add(row["Branch"].ToString(), row["InvetoryID"].ToString(),row["Warehouse"].ToString(),..);
        }
        }

 public DataTable ToDataTable<T>(List<T> items)
        {
            DataTable dataTable = new DataTable(typeof(T).Name);
            //Get all the properties
            PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
            foreach (PropertyInfo prop in Props)
            {
                //Setting column names as Property names
                dataTable.Columns.Add(prop.Name);
            }
            foreach (T item in items)
            {
                var values = new object[Props.Length];
                for (int i = 0; i < Props.Length; i++)
                {
                    //inserting property values to datatable rows
                    values[i] = Props[i].GetValue(item, null);
                }
                dataTable.Rows.Add(values);
            }
            //put a breakpoint here and check datatable
            return dataTable;
        }

答案 1 :(得分:0)

在这种情况下,我更喜欢使用一个事件。 您可以在主表单中注册活动。 在添加按钮上,您可以通知网格窗口。 您可以使用一些易于使用的EventArgs传输数据。

通过这种方式,您只需展开EventArgs

即可轻松更改表单