下面的代码适用于listview选择的索引更改,但现在我尝试使用组合框选择的索引更改执行相同的操作,但它不能正常工作。
List<Person> people = new List<Person>();
private void Form1_Load(object sender, EventArgs e)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
if (!Directory.Exists(@"C:\Users\loco\Desktop\Save\C# Programming\Trash\addressTest1" + "\\Address Book - Jonsey"))
Directory.CreateDirectory(@"C:\Users\loco\Desktop\Save\C# Programming\Trash\addressTest1" + "\\Address Book - Jonsey");
if (!File.Exists(@"C:\Users\loco\Desktop\Save\C# Programming\Trash\addressTest1" + "\\Address Book - Jonsey\\settings.xml"))
{
XmlTextWriter xmDoc = new XmlTextWriter(@"C:\Users\loco\Desktop\Save\C# Programming\Trash\addressTest1" + "\\Address Book - Jonsey\\settings.xml", Encoding.UTF8);
xmDoc.WriteStartElement("People");
xmDoc.WriteEndElement();
xmDoc.Close();
}
XmlDocument xDoc = new XmlDocument();
xDoc.Load(@"C:\Users\loco\Desktop\Save\C# Programming\Trash\addressTest1" + "\\Address Book - Jonsey\\settings.xml");
foreach (XmlNode xNode in xDoc.SelectNodes("People/People"))
{
Person p = new Person();
p.Name = xNode.SelectSingleNode("Name").InnerText;
p.Email = xNode.SelectSingleNode("Email").InnerText;
p.StreetAddress = xNode.SelectSingleNode("Address").InnerText;
p.AdditionalNotes = xNode.SelectSingleNode("Notes").InnerText;
p.Birthday = DateTime.FromFileTime(Convert.ToInt64(xNode.SelectSingleNode("Birthday").InnerText));
people.Add(p);
listView1.Items.Add(p.Name);
}
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count == 0)
return;
textBox1.Text = people[listView1.SelectedItems[0].Index].Name;
textBox2.Text = people[listView1.SelectedItems[0].Index].Email;
textBox3.Text = people[listView1.SelectedItems[0].Index].StreetAddress;
textBox4.Text = people[listView1.SelectedItems[0].Index].AdditionalNotes;
dateTimePicker1.Value = people[listView1.SelectedItems[0].Index].Birthday;
}
这是我所拥有的组合框示例,当从组合框中选择所选索引时,它只读取第一组值而不是第二组或第三组,依此类推。基本上我需要的是当选择每个索引时将每个变量更改为每个标签或文本框。
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
textBox1.Text = people[listView1.SelectedItems[0].Index].Name;
textBox2.Text = people[listView1.SelectedItems[0].Index].Email;
}
我尝试使用if(listView1.SelectedItems.Count == 0)返回;但它确实适用于组合框。试图找到一个变化,但似乎我错过了一些东西。
这是XML文档示例。
<People>
<People>
<Name>luke barb</Name>
<Email>luke@barb.com</Email>
<Address>;lkdjf;l</Address>
<Notes>fdj;ljsf;lkd;sfksadkjf</Notes>
<Birthday>130487387130000000</Birthday>
</People>
<People>
<Name>jake heckle</Name>
<Email>df;lksjfl</Email>
<Address>;ladjf;lkdsj</Address>
<Notes>df;lka;lfkj;lasjfd;lkjds</Notes>
<Birthday>116930363500000000</Birthday>
</People>
<People>
<Name>bob hook</Name>
<Email>kjad;lfkj</Email>
<Address>kdjf;lkjf;la</Address>
<Notes>j;dlkjskfjskjf;lsf</Notes>
<Birthday>111250427730000000</Birthday>
</People>
</People>