我有两个文件。一个名为Wood的类的文件。我已经用此类创建了一些对象。这些对象包括属性WoodType和其他一些。我将对象填充到名为woodObjects的数组中。第二个文件是Form,其中有一个ListView。
所以我的目标是,将所有具有属性的对象添加到ListView。我是那样做的:
String[] row = { (listView1.Items.Count + 1).ToString(), WoodType, condition, isDry};
ListViewItem item = new ListViewItem(row);
listView1.Items.Add(item);
成功。
现在,我必须更新ListView中一个对象的WoodType属性。我为此创建了一个按钮“ change Type”。我想到了用户单击要更改对象的行,然后单击“更改类型”按钮以更改WoodType。为了实现这一点,我想获取该行的索引,而不是使用其设置的Accessor来更改“ WoodType”的值,如下所示:
woodObjects[indexOfRowFromListView].WoodType = "Oak Wood";
是的,我知道,这永远不会那样做。因此,我的问题是:如何选择正确的索引以及如何更改属性的值?
*我还考虑了删除对象,但是保存了其值,因此我可以创建一个具有与WoodType相同值的新对象。感谢您的帮助!
我认为最干净的解决方案将涉及编写新的ListViewItem实现。像这样:
public class WoodObjectListItem : System.Windows.Forms.ListViewItem
{
public Wood WoodObject { get; }
public WoodObjectListItem(int rowNumber, Wood woodObject)
: base(new string[] { rowNumber.ToString(), woodObject.WoodType, woodObject.Condition, woodObject.IsDry })
{
WoodObject = woodObject;
}
public void ChangeType()
{
WoodObject.WoodType = "Oak Wood";
}
}
然后,您可以将woodObjects添加到列表视图中,如下所示:
listView1.Items.Add(new WoodObjectListItem(listView1.Items.Count + 1, woodObject));
当单击按钮时,您可以执行以下操作:
if (listView1.SelectedItem is WoodObjectListItem woodObjectListItem)
woodObjectListItem.ChangeType();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句