Использование списков с текстовыми полями - PullRequest
2 голосов
/ 18 октября 2011

Это мой код для добавления в мой список:

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
* 1008Скажем, я хочу первый пост, могу ли я каким-то образом вернуть все данные в текстовые поля по этому идентификатору или у меня есть поиск по индексу?Я хотел бы иметь возможность поместить код в первое текстовое поле, а затем нажать кнопку под названием «извлечение», которая заполняет другое текстовое поле, например, переходя по уникальному ключу в таблице SQL, но я не могу найти какую-либо информацию о том, возможно это или нет.1009 *

Ответы [ 3 ]

2 голосов
/ 18 октября 2011

Почему бы вам не создать класс с кодом, именем, ценой, на складе и использовать список

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 и отобразить их определенным образом, переопределите свойство toString в классе MyItem, и вы сможете отобразить любой текст, который вы хотите. Надеюсь, это поможет.

0 голосов
/ 18 октября 2011

Я не совсем понимаю, что вы имеете в виду, говоря: "могу ли я каким-то образом вернуть все данные обратно в текстовые поля (этим идентификатором)?"

но я бы получил такие данные:

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

Теперь у меня есть предмет, из которого я могу получить данные:

textbox1.Text = item[1].value;
0 голосов
/ 18 октября 2011

Вы не должны хранить данные только в элементах управления. Я хотел бы создать класс для хранения всей информации о конкретном элементе, заполнить ТО содержимым текстовых полей и сохранить его в некоторой коллекции (может быть, в словаре, если вы хотите найти его по коду)

Затем вы можете добавить ссылку на этот объект в свойстве «Tag» ListViewItem, чтобы вы могли сразу же извлечь его из любого выбранного ListViewItem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...