将价值从一种形式传递到另一种形式

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());,它会显示 ID0

出了什么问题,我该如何解决?

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();
        }