2009-11-12 115 views
0

這個問題很簡單, 如何使用c#插入ComboBox選擇項到ListBox中?如何將ComboBox項目插入ListBox? [winforms]

我已經試過這一點:

listbox.Items.Add(combobox.SelectedItem); 

和其他一些排列,但它始終顯示System.Data.DataRowView或類似的東西..

編輯:roblem被這2

致毒
lbList.DisplayMember = "hm"; 
lbList.ValueMember = "ID"; 
+0

它應該工作,如果你首先檢查並排除null。 – 2009-11-12 23:08:03

+0

它工作,但顯示字符串「Systm.Data。DataRowView「 – Ante 2009-11-12 23:16:21

+0

這將是非常有價值的信息包括在你的問題: - { – 2009-11-12 23:30:53

回答

4

您需要定義「不工作」。這是怎麼回事?
此工程實例工作正常。使用對象(取消註釋行),請確保您設置DisplayMember屬性,請注意,我不必投,因爲我使用該屬性。

public partial class Form1 : Form 
{ 
    private void Form1_Load(object sender, EventArgs e) 
    { 


     List<string> x = new List<string>(); 
     x.Add("A"); 
     x.Add("B"); 
     x.Add("C"); 
     x.Add("D"); 
     x.Add("B"); 


     List<Client> z = new List<Client>(); 
     z.Add(new Client() { Name = "A" }); 
     z.Add(new Client() { Name = "B" }); 
     z.Add(new Client() { Name = "C" }); 

     comboBox.Items.AddRange(x.ToArray()); 

     //comboBox.DisplayMember = "Name"; 
     //listBox.DisplayMember = "Name"; 
     //comboBox.Items.AddRange(z.ToArray()); 


    } 

    private void comboBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     listBox.Items.Add(comboBox.SelectedItem); 
    } 
} 


public class Client 
{ 
    public string Name { get; set; } 
} 
1

Ante我認爲問題來自comboBox.SelectedItem,這將返回一個對象,並在您的情況下,該對象恰好是一個System.Data.DataRowView。我認爲你需要將combobox.selectedItem轉換爲一個值。我是一個VB傢伙,所以不能確定爲C#的語法,但在VB中,我們會做這樣的事:

DirectCast(combobox.SelectedItem, DataRowView).Foo 

以foo什麼都珍惜你想傳遞給列表框。

可能的工作,如果你的目的是要包括在列表框中的組合框的值的另一種選擇是使用:

combobox.selectedvalue 

這個回報和對象,但它實際上是正在顯示的對象組合框天氣它是一個字符串,int等等。不知道這是否有幫助,但我必須在過去做一些與此類似的事情,這就是我提出的解決方案。

1

組合框的選定項是DataRowView,列表框正在調用DataRowView.ToString()來計算要顯示的內容。

您可以

  1. 演員的ComboBox.SelectedItemobject返回值DataRowView,並添加你想要顯示的列的值。 (即listbox.Items.Add(((DataRowView)combobox.SelectedItem).FieldName);
  2. 設置列表框的「DisplayMember」和「ValueMember」值,所以列表框不再只是使用ToString()這可能是您已經爲您的comboxbox完成的,否則它也會是顯示「System.Data.DataRowView」。
+0

tnx求助,第二個解決了問題,但slu mentioned提到第一..所以我必須給他」耐克標誌「 – Ante 2009-11-12 23:45:02

1

您可以方便地在(無類型)行:

DataRowView drv = (DataRowView) combobox.SelectedItem; 
DataRow row = drv.Row; 

之後,它取決於你需要什麼科拉姆,如果您知道列名:

object value = row["Column"]; 
listbox.Items.Add(value);