2013-07-24 122 views
0

這可能聽起來是一個非常愚蠢的問題,但我不確定這個答案。我有下面的代碼在我的我的VB項目,其正常工作的「的OnLoad」:VB Express 2008 - 從選定的組合框填充文本框

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文件):

Server1上,Cluster1,192.168.0.1

Server2上,Cluster2,172.16.16.1

我想做的是當您選擇Server1,將第三列中的IP填充到文本框(TextBox1)中。 現在,ComboBox2 & ComboBox3只是顯示信息正在正確讀取。這些實際上不會被使用。

+0

:所有的信息都被存儲在平行於3個組合框。當選擇了combobox1中的某個項目時,您需要將相應的項目(相同索引)從combobox3寫入文本框。這是你想要的嗎? – varocarbas

+0

嗨varobarbas,這正是我想要的,因爲我希望能夠在我的子程序中使用這個值(一個IP地址)。並且可能想要使用其他值,但是一旦我有了一個啓動和運行,然後我可以讓其他人工作 – Rebus

+0

(我的暱稱是varocarbas :))只是爲了清楚地說明一點:我的代碼完全適用於「常規「VS(任何版本:2008,2010等),並代表您的問題的最佳解決方案,即選擇combobox3索引作爲combobox1的函數。 Express版本對傳統VS有限制功能;我沒有將它安裝在我的電腦上,因此在這種情況下我無法檢查確切的限制。您報告的錯誤不會發生在傳統的VS中,因爲0是任何列表(包括組合框)的第一個索引;這就是爲什麼我刪除了我的答案。 – varocarbas

回答

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 
+0

該腳本的第一部分工作出色,他們都動態更新,這正是我想要的,但我努力從ComboBox3中將值提取到工作區域/文本框中。我仍然想把ComboBox3(或相關數據)的值提取到我可以使用的文本字段中。 – Rebus

+0

你有沒有試過我的代碼'SelectedIndexChanged'?除非我犯了一個錯誤,否則它應該給你提供你正在查找的信息,甚至不需要觸摸'ComboBox3'。這是有效的,因爲現在所有三個盒子都使用完全相同的對象列表。他們只是顯示不同。 –

+0

我建議製作一個實際的'ServerInfo'類來保存CSV文件中的字符串值。在VB.NET中輸入鴨子會讓寶寶哭泣。 –