gpt4 book ai didi

c# - 如何在 C# 中应用多个 .Tag 属性?

转载 作者:行者123 更新时间:2023-12-04 02:14:32 24 4
gpt4 key购买 nike

当我想存储/传递一个值时,我总是使用 .Tag 属性。例如,当我存储值时:

Form prosesEdit = new FormProsesChemicalRawWbEdit();
prosesEdit.Tag = (int)this.proses_chemicalDataGridView.Rows[e.RowIndex].Cells[1].Value;
prosesEdit.ShowDialog();

然后,我会像这样将值传递到我的 EDIT 表单中:

proses_chemical_id = (int) this.Tag;
this.proses_chemicalTableAdapter.FillByChemId(this.mcd_softwareDataSet.proses_chemical, proses_chemical_id);
this.proses_chemical_listTableAdapter.FillByChemId(this.mcd_softwareDataSet.proses_chemical_list, proses_chemical_id);

但最近,我应该存储和传递 2 个不同的值。比方说 (int)this.proses_chemicalDataGridView1.Rows[e.RowIndex].Cells[1].Value;(int)this.proses_chemicalDataGridView2.Rows[e.RowIndex].Cells[ 1].值(value);我该怎么做?谢谢

最佳答案

到目前为止给出的两个答案都可以,但我想稍微详细说明一下答案并提供一个替代方案。假设您像这样创建自己的类:

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 属性在表单中传递值通常是不好的做法,因为它需要大量的类型转换和每个标记中存储的内容的知识。

一个更健壮的方法是使用构造函数注入(inject),因为你知道你正在创建的表单类型:

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

然后您很可能必须将这些值存储为表单内的属性或字段。这是一种更健壮的方法的原因是它可以抵抗意外更改。换句话说,如果您将来需要传递第三个值,您就不太可能忘记更改需要更改的代码。

你也可以在这里使用属性注入(inject),但我不确定你的要求,所以我会留给你决定。

关于c# - 如何在 C# 中应用多个 .Tag 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13468241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com