将价值从一种形式传递到另一种形式
Passing Value From One Form to Another
在一个表单上,我有一个 dgv,其中有一列有一个用户可以单击的按钮,它将它们带到另一个表单,其中显示了有关该特定项目的更多信息(从数据库中只读)。
这里是点击单元格按钮的代码:
private void datagridview1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//MORE INFORMATION BUTTON DGV1
this.rowIndex1 = e.RowIndex;
this.ID = Convert.ToInt32(datagridview1.Rows[this.rowIndex1].Cells["id"].Value);
moreinformation moreinfo1 = new moreinformation();
moreinfo1.Show();
}
我正在使用 public int ID { get; set; }
将特定项目的 ID 传递给另一个表单,以便它可以从数据库中获取正确的数据到 'more information' 表单。
信息页面的代码如下:
private void moreinformation_Load(object sender, EventArgs e)
{
//DISPLAY RELEVANT INFO FROM DB
invmain invmain2 = new invmain();
Connection();
sqlconnection.Open();
sqlcmd = new SqlCommand("SELECT * FROM inventory_table WHERE id= " + invmain2.ID, sqlconnection);
using (SqlDataReader sqldr = sqlcmd.ExecuteReader())
{
while (sqldr.Read())
{
txtbx1.Text = (sqldr["item"].ToString());
txtbx2.Text = (sqldr["quantity"].ToString());
linklbl1.Text = (sqldr["datasheet"].ToString());
txtbx3.Text = (sqldr["description"].ToString());
datelbl2.Text = (sqldr["date"].ToString());
}
sqldr.Close();
}
sqlconnection.Close();
}
我检查以确保 ID(在第一个表单上)已正确设置为正确的 ID(基于项目)。但是,在更多信息表单中,如果我包含一些消息框代码来显示 ID:MessageBox.Show(invmain2.ID.ToString());
,它会显示 ID
是 0
。
出了什么问题,我该如何解决?
ID 属性 应该在 moreinformation
表格上。如果没有,请继续将 public int ID { get; set; }
添加到该表格。然后,您必须将 ID 传递给第二种形式的实例。因此,如果您有 moreinformation.ID
属性,请按如下方式设置:
private void datagridview1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//MORE INFORMATION BUTTON DGV1
this.rowIndex1 = e.RowIndex;
this.ID = Convert.ToInt32(datagridview1.Rows[this.rowIndex1].Cells["id"].Value);
moreinformation moreinfo1 = new moreinformation();
//ADD THIS LINE
moreinfo1.ID = this.ID;
moreinfo1.Show();
}
在一个表单上,我有一个 dgv,其中有一列有一个用户可以单击的按钮,它将它们带到另一个表单,其中显示了有关该特定项目的更多信息(从数据库中只读)。
这里是点击单元格按钮的代码:
private void datagridview1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//MORE INFORMATION BUTTON DGV1
this.rowIndex1 = e.RowIndex;
this.ID = Convert.ToInt32(datagridview1.Rows[this.rowIndex1].Cells["id"].Value);
moreinformation moreinfo1 = new moreinformation();
moreinfo1.Show();
}
我正在使用 public int ID { get; set; }
将特定项目的 ID 传递给另一个表单,以便它可以从数据库中获取正确的数据到 'more information' 表单。
信息页面的代码如下:
private void moreinformation_Load(object sender, EventArgs e)
{
//DISPLAY RELEVANT INFO FROM DB
invmain invmain2 = new invmain();
Connection();
sqlconnection.Open();
sqlcmd = new SqlCommand("SELECT * FROM inventory_table WHERE id= " + invmain2.ID, sqlconnection);
using (SqlDataReader sqldr = sqlcmd.ExecuteReader())
{
while (sqldr.Read())
{
txtbx1.Text = (sqldr["item"].ToString());
txtbx2.Text = (sqldr["quantity"].ToString());
linklbl1.Text = (sqldr["datasheet"].ToString());
txtbx3.Text = (sqldr["description"].ToString());
datelbl2.Text = (sqldr["date"].ToString());
}
sqldr.Close();
}
sqlconnection.Close();
}
我检查以确保 ID(在第一个表单上)已正确设置为正确的 ID(基于项目)。但是,在更多信息表单中,如果我包含一些消息框代码来显示 ID:MessageBox.Show(invmain2.ID.ToString());
,它会显示 ID
是 0
。
出了什么问题,我该如何解决?
ID 属性 应该在 moreinformation
表格上。如果没有,请继续将 public int ID { get; set; }
添加到该表格。然后,您必须将 ID 传递给第二种形式的实例。因此,如果您有 moreinformation.ID
属性,请按如下方式设置:
private void datagridview1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//MORE INFORMATION BUTTON DGV1
this.rowIndex1 = e.RowIndex;
this.ID = Convert.ToInt32(datagridview1.Rows[this.rowIndex1].Cells["id"].Value);
moreinformation moreinfo1 = new moreinformation();
//ADD THIS LINE
moreinfo1.ID = this.ID;
moreinfo1.Show();
}