我有2个表单,form1
和form2
。每当我在form1中双击datagrid的单元格时,它将转到表单2,然后我在数据网格中显示它们的一些项目和价格。我在那里选择一行,该值通过1 datagridview传递。但是我希望传递第二个值,这也超过了写第一个传递给表单1的值。我想在下一行中添加它。我该怎么办?
这是表格2的代码
private void Form2_Load(object sender, EventArgs e)// loading data to datagrid from database file
{
SqlDataAdapter sda = new SqlDataAdapter(@"select brnDb.compname as [company name], brnDb.catname as [category Name], itemDB.fullname as [Item Name], itemDb.itmbyp as [Buying Price], itemDB.itmdlrp [Dealer Price],itemDB.itmmrp as [MRP],itemDb.itmunit as [Unit Of Measure], itemDB.itmml [Liters], itemDB.itmgr[KGs], itemDb.itmpc[Units] from brnDB inner join itemDb on brnDb.brname=itemDB.brname order by itemDB.fullname asc", con);
DataTable dt = new DataTable();
DataSet ds = new DataSet();
sda.Fill(dt);
dataGridView1.DataSource = dt;
}
通过单击按钮传递所选行以形成1
private void button1_Click(object sender, EventArgs e)
{
Form1 b = new Form1(dataGridView1.SelectedRows[0].Cells[2].Value.ToString(),
dataGridView1.SelectedRows[0].Cells[3].Value.ToString(),
dataGridView1.SelectedRows[0].Cells[4].Value.ToString(),
dataGridView1.SelectedRows[0].Cells[5].Value.ToString());
b.ShowDialog();
}
表格1的代码
public Form1(string Item_Name, string Buying_Price, string Dealrer_Price, string MRP )
{
InitializeComponent();
int n;
n = dataGridView1.Rows.Add();
dataGridView1.Rows[n].Cells[1].Value = Item_Name;
dataGridView1.Rows[n].Cells[3].Value = Buying_Price;
dataGridView1.Rows[n].Cells[4].Value = Dealrer_Price;
dataGridView1.Rows[n].Cells[5].Value = MRP;
}
因此,值从表单2传递,但每次都在第一行覆盖。但我想在传递之前在form1中添加新行。也许我想在这里使用一些循环,但我不知道如何。为了循环目的,我也声明了一个整数。我用Google搜索但最终没有得到好结果。
答案 0 :(得分:0)
您必须在form1中添加一个List,可以在form2中访问。
将Form1 b = null;
定义为全局变量
添加b = new Form1();
Form2_Load函数
在ShowDialog();
之前将b.list.Add(dataGridView1.SelectedRows[0]);
添加到button1_click函数
仅在button1_click功能
中保留b.ShowDialog();
行
将public List<DataGridViewRow> list = new List<DataGridViewRow>();
添加到form1
答案 1 :(得分:0)
我们还可以有另一个选择是创建具有通用列表的静态类。我们可以将该列表用作临时存储。
{{1}}
此类具有公共静态SetRow setter。使用此setter将数据保存在全局列表中,即&#34; _globalVar&#34;。
此类还具有在任何点重置该列表的方法。只需调用该静态方法即可重置该网格。
如何使用
这是获取数据并传递给form1的form2代码。
{{1}}
以表格1
接收数据并将其保存到我们的全球列表中{{1}}