2012-11-25 332 views
0

一個用於訪問,另一個用於拾取,當用戶將某個訪問或拾取添加到列表中時,它也會添加到列表框中以向用戶顯示。列表框,選擇索引更改

我的問題是,當我點擊列表框中的項目,例如Indexchanged,我希望它打開與訪問或交付有關的新GUI,因此,如果他們點擊訪問它打開訪問表單爲在我的代碼中顯示了下面的內容,但是我怎樣才能讓它區分列表,以便它知道打開哪個表單?

private void lstVisits_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     //Allow the user to click on the listbox to open a visit 
     //This event is called after the user has clicked on the list 
     int index = lstVisits.SelectedIndex; 
     //Get the index of the Visit that the user has clicked upon 

     Visits selected = theList.getVisits(index); 
     //Get the visits object from the list 

     Visitsform.visits = selected; 
     //Ensure that the appointment form references the selected visit 

     Visitsform.ShowDialog(); 
     //Show the visits form 

     updateList(); 
     //update the list as the user may have deleted the appointment 
+0

訪問和交付存儲在哪裏?你有兩個列表框用於訪問,一個用於Delivers和/或兩者都添加到同一個列表框? –

+0

它們是兩個不同的列表,一個名爲List.cs的訪問列表和一個名爲pickup lists.cs的存儲deliverys的類,它們都被添加到一個列表框中 – TAM

+0

什麼是'theList'? getVisits(index)'有什麼方法呢? –

回答

1

如果兩個列表中的項目都存儲在同一個列表框,那麼你可以使用這樣的事情:

編輯:如果您想從列表框中獲取的對象,那麼你應該將其添加爲對象列表框,例如:

Visits v = new Visit(); 
Pickups p = new Pickup(); 
lstVisits.Items.Add(v); 
lstVisits.Items.Add(p);  


private void lstVisits_SelectedIndexChanged(object sender, EventArgs e) 
      { 
       if (listBox1.SelectedItems.Count > 0) 
       { 
        object o = listBox1.SelectedItems[0]; 
        if (o is Visits) 
        { 
         Visits visit = (Visits)o; 
         Visitsform.visits = visit; 
         Visitsform.ShowDialog(); 
        } 
        else 
        { 
         Deliveries delivery = (Deliveries)o; 
         Deliveriesform.visits = visit; 
         Deliveriesform.ShowDialog(); 
        } 
       } 
      } 
+0

來填充列表框。所以我嘗試了這一點,它突出顯示了else語句的第一行並給出以下錯誤 無法將類型爲'System.String'的對象轉換爲鍵入'Coursework_2.Pickups'。 – TAM

+0

如果您將對象添加爲對象,您應該可以將該對象轉換爲其類型。看起來你只添加了對象的字符串,你不能施放它。覆蓋類中的ToString方法(訪問和拾取)並用它們填充列表框。然後你將能夠施放它們。 –

+0

在皮卡類中,我有base.ToString,這是你的意思 – TAM