到目前为止给出的两个答案都有效,但我想详细说明一下答案并提供替代方案。假设您像这样创建自己的类:
public class YourClass
{
public int ProsesChemicalId1 { get; set; }
public int ProsesChemicalId2 { get; set; }
}
然后,您可以将类的实例分配给 Tag 属性,如下所示:
YourClass yourClass = new YourClass();
yourClass.ProsesChemicalId1 = this.proses_chemicalDataGridView1.Rows[e.RowIndex].Cells[1].Value;
yourClass.ProsesChemicalId2 = this.proses_chemicalDataGridView2.Rows[e.RowIndex].Cells[1].Value;
Form prosesEdit = new FormProsesChemicalRawWbEdit();
prosesEdit.Tag = yourClass;
prosesEdit.ShowDialog();
您可以从 Tag 属性中获取该类的实例,如下所示:
yourClass = (YourClass) this.Tag;
this.proses_chemicalTableAdapter.FillByChemId(this.mcd_softwareDataSet.proses_chemical, yourClass.ProsesChemicalId1);
然而,使用 Tag 属性在表单中传递值通常是不好的做法,因为它需要大量的类型转换和了解每个标签中存储的内容。
更可靠的方法是使用构造函数注入,因为您知道要创建的表单的类型:
int value1 = this.proses_chemicalDataGridView1.Rows[e.RowIndex].Cells[1].Value;
int value2 = this.proses_chemicalDataGridView2.Rows[e.RowIndex].Cells[1].Value;
Form prosesEdit = new FormProsesChemicalRawWbEdit(value1, value2);
prosesEdit.ShowDialog();
然后,您很可能必须将这些值存储为表单内的属性或字段。这是一种更稳健的方法,因为它可以防止意外更改。换句话说,如果您将来需要传递第三个值,那么您不太可能忘记更改需要更改的代码。
您也可以在这里使用属性注入,但我不确定您的要求,所以我将其留给您决定。