使用带有文本框的列表

时间:2011-10-18 12:30:54

标签: c# winforms

这是我添加到我的列表的代码:

List<string> myList = new List<string>();

private void button1_Click(object sender, EventArgs e)
{
  ListViewItem myList = new ListViewItem(txtBox1.Text);
  myList.SubItems.Add(txtBox2.Text);
  myList.SubItems.Add(txtBox3.Text);
  myList.SubItems.Add(txtBox4.Text);
  listView1.Items.Add(myList);
  txtBox1.Text = "";
  txtBox2.Text = "";
  txtBox3.Text = "";
  txtBox4.Text = "";
}

这会添加到我的列表中并清除,并允许我在列表中添加其他帖子。问题是我希望能够重新填充文本框以允许我更新列表中的帖子。

为了使我的观点更清楚,我的列表如下所示:

Code | Name | Price | In stock
------------------------------
123    aa     122     2
124    bb     111     5

说我想要第一篇文章,我可以通过该标识符以某种方式将所有数据设置回文本框中,还是按索引搜索?我希望能够将代码放在第一个文本框中,然后点击一个名为retrieve的按钮,填充另一个文本字段,就像通过sql表中的唯一键一样,但我无法找到任何有关它的信息。< / p>

3 个答案:

答案 0 :(得分:2)

为什么不创建一个具有代码,名称,价格,库存和使用列表

的类
Public MyItem
{
public string Code;
public string Name,
public float Price;
public bool inStock;

}

List<MyItem> myList = new List<MyItem>();

private void button1_Click(object sender, EventArgs e)
{
  MyItem temp = new MyItem()
  temp.Code=txtBox1.Text;
  temp.Name=(txtBox2.Text);
  temp.Price=(txtBox3.Text);
  temp.inStock=(txtBox4.Text);
  mylist.add(temp);
  txtBox1.Text = "";
  txtBox2.Text = "";
  txtBox3.Text = "";
  txtBox4.Text = "";
}

如果以这种方式实现它,那么您只需使用索引来遍历列表中的所有项目。使用上面的示例,您可能需要先转换文本框中的一些值才能使用它们(价格加倍)

此外,如果您要将项目添加到Listview并以特定方式显示它们,则覆盖MyItem类中的toString属性,您可以显示所需的任何文本。希望这会有所帮助。

答案 1 :(得分:0)

您不应仅将数据存储在控件中。我会创建一个类来保存有关特定项目的所有信息,并使用文本框的内容填充THAT,并将其存储在某个集合中(如果您想通过代码查找,可能是字典)

然后,您可以在ListViewItem的“Tag”属性中添加对此对象的引用,以便您可以立即从任何选定的ListViewItem中获取它。

答案 2 :(得分:0)

我不明白你的意思是说“我可以通过(那个标识符)以某种方式将所有数据设置回文本框中”哪个标识符?!

但我会得到这样的数据:

var item = listview1.items.where(x=>x.SubItems[0].value == mycodeId).firstordefault();

现在我有了可以从中检索数据的项目:

textbox1.Text = item[1].value;