1

アプリケーションに 2 つのコンボボックスがあります。最初のコンボボックスは必要なすべてのデータ (この場合は工場番号) を取得できますが、選択されている工場に応じて、次のコンボボックス (この場合は行番号) にその工場の正しい行が自動的に入力されるようにします。これが私のXMLファイルです - またはテストデータ

<?xml version="1.0" encoding="utf-8"?>
<Profiles>
<Factories>
  <Factory>F1</Factory>

  <Factory>F2</Factory>

  <Factory>F3</Factory>

  <Factory>F4</Factory>

  <Factory>F5</Factory>
  <Factory>F6</Factory>
  <Factory>F7</Factory>
  <Factory>F8</Factory>
</Factories>

  <Lines>
    <F1>G1</F1>
    <F1>G2</F1>
    <F1>G3</F1>
  </Lines>
</Profiles>

これが私がこれまでに持っているものです:

Private Sub populateComboBoxes()
    Dim doc As New XmlDocument()
    doc.Load("C:\TFS2010Source\ShopFloorApps\Main\Source\Components\000280LinePCBackup\000280LinePCBackup\Lines.XML")

    Dim factoryList As XmlNodeList = doc.SelectNodes("/Profiles/Factories/Factory")
    For Each Factory As XmlNode In factoryList
        factoryComboBox.Items.Add(Factory.InnerText)
    Next



End Sub

Private Sub factoryComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles factoryComboBox.SelectedIndexChanged
    Dim doc As New XmlDocument()
    doc.Load("C:\TFS2010Source\ShopFloorApps\Main\Source\Components\000280LinePCBackup\000280LinePCBackup\Lines.XML")


    Dim lineList As XmlNodeList = doc.SelectNodes("/Profiles/Lines")

    For Each line As XmlNode In lineList


        If factoryComboBox.SelectedItem.ToString = line.FirstChild.Name Then


            lineComboBox.Items.Add(line.FirstChild.InnerText)


        End If
        Next
End Sub

だから私が欲しいのは、F1を選択すると、他のコンボボックスにG1、G2、G3の行が入力されることです。

ありがとう

4

1 に答える 1

1

Items コレクションをクリアし、パスlineComboBoxも変更する必要がありSelecteNodesます。

lineComboBox.Items.Clear()
Dim lineList As XmlNodeList = doc.SelectNodes("/Profiles/Lines/" & factoryComboBox.SelectedItem.ToString)
For Each line As XmlNode In lineList
    lineComboBox.Items.Add(line.FirstChild.InnerText)
Next
于 2012-07-10T08:33:17.203 に答える