Во-первых, я заполнил объект списка данными из XML-файла. После этого я заполнил ListView
необходимыми полями без каких-либо проблем. Как я могу получить индекс из выбранного элемента ListView
, а затем дать соответствующее значение для некоторого текстового поля?ListView выбранный элемент в TextBox
Это код для него:
private void Form1_Load(object sender, EventArgs e)
{
List<Tasks> taskList = new List<Tasks>();
listView1.Columns.Add("Date:");
listView1.Columns.Add("Job:");
listView1.Columns.Add("Client Name");
listView1.Columns.Add("Submitted by");
taskList = getTasks();
listView1.Items.Clear();
for (int i = 0; i < taskList.Count; i++)
{
Tasks task = taskList.ElementAt(i);
ListViewItem row = new ListViewItem();
row.Text=task.date.ToString();
row.SubItems.Add(task.job);
row.SubItems.Add(task.clientName);
row.SubItems.Add(task.submittedBy);
listView1.Items.Add(row);
}
}
public List<Tasks> getTasks()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("data.xml");
XmlNodeList nodes = xmlDoc.DocumentElement.SelectNodes("/tasks/task");
List<Tasks> taskList = new List<Tasks>();
foreach (XmlNode node in nodes)
{
Tasks task = new Tasks();
task.id = Convert.ToInt32(node.SelectSingleNode("id").InnerText);
task.date = Convert.ToDateTime(node.SelectSingleNode("submittedDate").InnerText);
task.submittedBy = node.SelectSingleNode("submittedBy").InnerText;
task.clientName = node.SelectSingleNode("clientName").InnerText;
task.job = node.SelectSingleNode("job").InnerText;
task.taskCategory = node.SelectSingleNode("taskCategory").InnerText;
task.taskDescription = node.SelectSingleNode("taskDescription").InnerText;
task.hours = node.SelectSingleNode("hours").InnerText;
task.status = node.SelectSingleNode("status").InnerText;
task.isBilled = node.SelectSingleNode("isBilled").InnerText;
task.cost = node.SelectSingleNode("cost").InnerText;
task.followUpInfo = node.SelectSingleNode("followUpInfo").InnerText;
task.invoiceNumber = node.SelectSingleNode("quickBooksInvoiceNo").InnerText;
taskList.Add(task);
}
return taskList;
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
Что мне нужно теперь, как, когда я нажимаю элемент из listView1
, чтобы показать какое-то значение в текстовом поле? Но это значение должно быть взято из объекта списка taskList
, а не из самого документа xml.
Что мне нужно, чтобы показать, как-то к SelectedIndexChanged, что есть где-то в коде TaskList .... Я попытался с частной недействительным (отправитель объекта, EventArgs е, список TaskList) listView1_SelectedIndexChanged но никакого успеха. Я также добавил идентификатор в строке ListViewItem = new ListViewItem() .... –
user2962759
просто делайте то, что я сказал.define это вне метода загрузки формы. Не добавляйте дополнительный столбец, просто используйте свойство тега –
Когда я нажимаю внутри списка item, он даже не входит в метод listView1_selectedIndexChange – user2962759