0

こんにちは、私は小さなプロジェクトを行っていますが、今は途中で立ち往生しています。

プログラムは、シーケンシャル テキスト ファイルを読み取り、それを構造体の配列/配列にロードします。

データ情報は次のようになります (サンプル)。

ID | Name    | Type
1  | Cat     | Animal
2  | Dog     | Animal
3  | Parrot  | Bird
4  | Tuna    | Fish
5  | Tiger   | Animal
6  | Sparrow | Bird

DATA.txt ファイルのサンプル データは次のようになります。

1;Cat;Animal
2;Dog;Animal
3;Parrot;Bird
4;Tuna;Fish
5;Sparrow;Bird
6;Tiger;Animal

これはあくまでサンプルデータで、私のオリジナルデータは以上です。

FileStreamReader を使用して DATA.txt ファイルを開きました。

Dim FileStreamReader As StreamReader = New StreamREader(DATA.txt)

リスト内のすべての要素を読み取り、 を通過しReadArrayStringます。
以下を使用して文字列を分割します。

DataString.Split(New Char() {";"c})

通り抜ける

ReadArrayString(0)
ReadArrayString(1)
ReadArrayString(2)

インデックス 0 は ID、インデックス 1 は名前、インデックス 2 はタイプです。

次に、ドロップダウン コンボボックス メニューの型を配列から重複なく読み込みます。このような:

If TypeComboBox.FindString(ReadArrayString(2)) < 0 Then
  TypeComboBox.Items.Add(ReadArrayString(2))
End If

TypeComboBox をクリックすると、次のリストのみのドロップダウン メニューが表示されます。

Animal
Bird
Fish

この後、コンボボックスのドロップダウン メニューから動物の種類を選択またはクリックすると、動物の種類の ID と名前のみが ListBox に追加されます。

擬似コードは次のようになります。

If Animal is selected/clicked from TypeComboBox then
  Add Cat into listbox
  Add Dog into listbox
  Add Tiger into listbox
Else If Bird is selected then
  Add Parrot into listbox
  Add Sparrow into listbox
Else If Fish is selected then
  Add Tuna in to listbox
End If

1つの列/配列から重複せずにコンボボックスにアイテムをロードすることだけを理解しました。しかし、ある列/配列の値を別の列/配列と比較してリストボックスにロードする方法がわかりません。コード内に一致する値をハードコードしたり、書き込んだりしたくありません。私が欲しいのは、配列を使用することです。

どんな助けでも素晴らしいでしょう。

説明が下手で申し訳ありません。上記の疑似コードで、私の問題をある程度理解できることを願っています。

4

1 に答える 1

0

私があなたの質問を誤解していない限り、あなたがやろうとしていることに対して、このようなことがうまくいくはずです。

For Each row as String() In TwoDArray
    If row(2) = TypeComboBox.Text Then
        listbox.Items.Add(row(1))
    End If
Next
于 2012-05-02T14:02:04.680 に答える