0

これは本当にばかげた質問に聞こえるかもしれませんが、これに対する答えはわかりません。VB プロジェクトの「OnLoad」に次のコードがあり、正常に動作します。

 Dim ServName = (From line In IO.File.ReadAllLines("c:\Testing\Servers.csv") _
Where line.Length > 0 _ Let Items = line.Split(","c) _ Select New With _ {.ServerRef = Items(0), _ .ServerName = Items(1), _ .ServerIP = Items(2) _ } _ ).ToList

    For Each Server In ServName
        Console.WriteLine("[{0} [{1}] [{2}]", _
                          Server.ServerRef, _
                          Server.ServerName, _
                          Server.ServerIP _
              )
    Next

    Dim h As String
    h = 0
    For Each Server In ServName
        ComboBox1.Items.Add(Server(h).ServerRef)
        ComboBox2.Items.Add(Server(h).ServerName)
        ComboBox3.Items.Add(Server(h).ServerIP)

        h = h + 1
    Next

しかし、ComboBox_SelectedIndexChanged セクションでやりたいことは、ComboBox1 から行った選択を取得し、ComboBox3 で対応する情報を取得することです。

例 (CSV ファイル内):

サーバー1、クラスター1、192.168.0.1

サーバー 2、クラスター 2、172.16.16.1

私がやりたいことは、Server1 を選択すると、3 列目の IP がテキスト ボックス (TextBox1) に入力されることです。現状では、ComboBox2 & ComboBox3 は、情報が正しく読み込まれていることを表示するだけです。これらは実際には使用されません。

4

1 に答える 1

0

現状では、リストから情報を抽出してから、ServNameリストを破棄しています。その結果、あるボックスのどの値が他のボックスのどの値に属しているかを判断する方法がありません。

代わりに、次のようなことをしてもらいたい:

ComboBox1.DataSource = ServName
ComboBox1.DisplayMember = "ServerRef"

ComboBox2.DataSource = ServName
ComboBox2.DisplayMember = "ServerName"

ComboBox3.DataSource = ServName
ComboBox3.DisplayMember = "ServerIP"

これで、box1 で選択されている項目に応じて、参照の等価性を使用して box2 と box3 を操作できるようになりました。

編集

さらに、私のアプローチに従えば、他のボックスも必要ありません。1 つのボックスに必要なすべての情報が含まれています。

Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    Dim box As ComboBox = DirectCast(sender, ComboBox)
    Dim server As Object = box.SelectedItem

    Dim serverRef As String = server.ServerRef
    Dim serverName As String = server.ServerName
    Dim serverIP As String = server.ServerIP
End Sub
于 2013-07-24T12:08:26.783 に答える