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

ETC

我想要做的是当您选择 Server1 时,第三列中的 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 回答