Я бы вернулся на пару шагов назад и посмотрел бы на ваш дизайн.Как часто вы будете обращаться к XML прямо в вашем коде?Чтение файла каждый раз, когда изменения, выбранные индексом ListBox, кажется бесполезным, не говоря уже о том, что файл недоступен, это вызовет исключение.
Если вы собираетесь обращаться к XML несколько раз,Я хотел бы рассмотреть создание объекта для хранения ваших данных XML:
public class Module
{
public String Name { get; set; }
public String Code { get; set; }
public String Capacity { get; set; }
public String Semester { get; set; }
public String Prerequisite { get; set; }
}
Затем создайте коллекцию объектов вашего модуля, когда вы читаете XML
var modules = (from elem in doc.Root.Descendants("Module")
select new Module()
{
Name = elem.Element("Name").Value,
Code = elem.Element("Code").Value,
Capacity = elem.Element("Capacity").Value,
Semester = elem.Element("Semester").Value,
Prerequisite = elem.Element("Prerequisite").Value,
}).ToDictionary(k=>k.Name,v=>v);
(если имя элемента выигралоне быть уникальным, вы не можете сделать словарь, и вам придется составить список)
Из этой коллекции вы можете загрузить имена в списокBox
listBox1.Items.AddRange(modules.Keys.ToArray());
Изатем в вашем обработчике событий listBox1_SelectedIndexChanged
вы можете сделать что-то вроде:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
labelCodeNumber.Text = modules[listBox1.SelectedValue].Code;
}
Вы также можете рассмотреть возможность привязки объекта Module
к списку ListBox, но я не очень разбираюсь в этом, поэтому я могуТам нет большой помощи.
Редактировать: Вот как поместить коллекцию в ваш код, чтобы вы могли получить к ней доступ любым способом.
public partial class Form1 : Form
{
private Dictionary<String, Module> modules;
public Form1()
{
this.modules = LoadXml(XDocument.Load(xmlPath);
}
private Dictionary<String, Module> LoadXml(XDocument doc)
{
return (from elem in doc.Root.Descendants("Module")
select new Module()
{
Name = elem.Element("Name").Value,
Code = elem.Element("Code").Value,
Capacity = elem.Element("Capacity").Value,
Semester = elem.Element("Semester").Value,
Prerequisite = elem.Element("Prerequisite").Value,
}).ToDictionary(k=>k.Name, v=>v);
}
}