Ich möchte es so machen, dass das Element, das ich im Listenfeld ausgewählt habe, seine Geschwisterelemente in Beschriftungen anzeigt. Zur Zeit habe ich meine XML-Datei verwendet, um das Element <Name>
zu erhalten und meine Listbox mit diesen <Name>
Werten zu füllen. Jetzt möchte ich es so machen, dass, immer wenn das <Name>
im Listenfeld hervorgehoben wird, es die <Code>
bezogen auf das Modul in einem Etikett auf dem Formular zeigt.Übereinstimmende XML-Elemente zu ListBox ausgewähltem Element - C#
Wenn in der Listbox Algorithmen und Datenstrukturen ausgewählt ist, werden Code, Kapazität, Semester und Voraussetzungen in Beschriftungen des Formulars angezeigt. Wenn ein anderes Modul gewählt ist, das wieder tun für das ausgewählte Modul
Hier ist meine XML:
<?xml version="1.0" encoding="utf-8" ?>
<SoftwareEngineering>
<Module>
<Name>Algorithms and Data Structures</Name>
<Code>3SFE504</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>3D Graphics I</Name>
<Code>3SFE508</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Event-Driven Programming</Name>
<Code>3SFE513</Code>
<Capacity>10</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Object Oriented Design</Name>
<Code>3SFE514</Code>
<Capcity>10</Capcity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Requirements Engineering</Name>
<Code>3SFE516</Code>
<Capacity>10</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Introduction to AI</Name>
<Code>3SFE599</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Java Mobile Application Development</Name>
<Code>3SFE540</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>3SFE514(corequisite)</Prerequisite>
</Module>
<Module>
<Name>C# .NET Programming</Name>
<Code>3SFE541</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>3SFE514(corequisite)</Prerequisite>
</Module>
<Module>
<Name>Software Engineering Group Project</Name>
<Code>3SFE515</Code>
<Capacity>5</Capacity>
<Semester>2</Semester>
<Prerequisite>3SFE514(corequisite)</Prerequisite>
</Module>
<Module>
<Name>Software Engineering</Name>
<Code>3SFE519</Code>
<Capacity>10</Capacity>
<Semester>2</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Mobile User Interface Development</Name>
<Code>3SFE542</Code>
<Capacity>5</Capacity>
<Semester>2</Semester>
<Prerequisite>3SFE540</Prerequisite>
</Module>
<Module>
<Name>Interactive Multimedia</Name>
<Code>3MTS954</Code>
<Capacity>5</Capacity>
<Semester>2</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Concurrent Programming</Name>
<Code>3SFE555</Code>
<Capacity>5</Capacity>
<Semester>2</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Mobile Gaming</Name>
<Code>3SFE557</Code>
<Capacity>10</Capacity>
<Semester>2</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Intelligent Systems</Name>
<Code>3SFE500</Code>
<Capacity>10</Capacity>
<Semester>2</Semester>
<Prerequisite>3SFE599</Prerequisite>
</Module>
<Module>
<Name>3D Graphics II</Name>
<Code>3SFE501</Code>
<Capacity>10</Capacity>
<Semester>2</Semester>
<Prerequisite>3SFE508</Prerequisite>
</Module>
</SoftwareEngineering>
Und hier ist, wie ich habe versucht zu erreichen, was ich brauche:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
XDocument doc = XDocument.Load(workingDir + @"\Moduleslist.xml");
var names = doc.Root.Descendants("Module").Elements("Code").Select(b => b.Value);
var name = doc.Root.Descendants("Module").Elements("Name").Select(a => a.Value);
if (listBox1.SelectedValue == name)
{
labelCodeNumber.Text = names.ToString();
}
}
Bitte, wenn mir jemand helfen könnte, würde ich es zu schätzen wissen
Können Sie mir sagen, wo ich die Sammlung in meinen Code einfügen soll? Ich weiß nicht, wo – a7omiton
Dies ist die alternative Lösung, über die ich unten gesprochen habe. Anstatt jedoch ein Wörterbuch zu verwenden, können Sie die Modulliste direkt der ListBox zuweisen und dann die DisplayMember-Eigenschaft festlegen. – aKzenT
Sie sollten angeben, ob Sie gerade Ihre Listenbox füllen. – aKzenT