C# Listbox从另一个Listbox绑定

C# Listbox从另一个Listbox绑定,c#,winforms,C#,Winforms,我的表单中有两个列表框,两个框之间有一个按钮。在第一个框中,我绑定了数据库中的一些数据,从这个列表框中,我必须选择项目,并且应该在第二个列表框中显示那些选定的项目。这应该在我单击按钮时发生。我使用了以下代码。我使用了哈希表 private void btnCATAdd_Click(object sender, EventArgs e) { Hashtable ht = new Hashtable(); ht.Add(lbCATallSubcat.SelectedValue.ToS

我的表单中有两个列表框,两个框之间有一个按钮。在第一个框中,我绑定了数据库中的一些数据,从这个列表框中,我必须选择项目,并且应该在第二个列表框中显示那些选定的项目。这应该在我单击按钮时发生。我使用了以下代码。我使用了哈希表

private void btnCATAdd_Click(object sender, EventArgs e)
{
    Hashtable ht = new Hashtable();
    ht.Add(lbCATallSubcat.SelectedValue.ToString(),
                                    lbCATallSubcat.Text.ToString());
    int i = 0;
    foreach (string ent in ht.Values)
    {
       string[] name = new string[lbCATallSubcat.Items.Count];
       for (i = 0; i < lbCATallSubcat.SelectedItems.Count; i++)
       {
           name[i] = lbCATallSubcat.Text;
           this.lbCATSelectedSubcat.Items.Add(name[i]);
       }
       lbCATSelectedSubcat.DisplayMember = ht.Values.ToString();
       lbCATSelectedSubcat.ValueMember = ht.Keys.ToString();
    }
}
private void btncatad_单击(对象发送者,事件参数e)
{
Hashtable ht=新的Hashtable();
ht.Add(lbcatalSubcat.SelectedValue.ToString(),
lbcatalSubcat.Text.ToString());
int i=0;
foreach(ht.Values中的字符串ent)
{
string[]name=新字符串[lbcatalSubcat.Items.Count];
对于(i=0;i

当我在第一个列表框中只选择一个项目时,它可以正常工作,但当从第一个列表框中选择多个项目时,我无法显示

private void btnCATAdd_Click(object sender, EventArgs e)
{
    Hashtable ht = new Hashtable();
     for(int i=0;i<lbCATallSubcat.Items.Count;i++)
      {
         if(ht.items[i].Selected)
           {
             ht.Add(lbCATallSubcat.Items[i].Value.ToString(),
                                    lbCATallSubcat.Items[i].Text.ToString());
           }
       }

      i = 0;
    foreach (string ent in ht.Values)
    {
       string[] name = new string[lbCATallSubcat.Items.Count];
       for (i = 0; i < lbCATallSubcat.SelectedItems.Count; i++)
       {
           name[i] = lbCATallSubcat.Text;
           this.lbCATSelectedSubcat.Items.Add(name[i]);
       }
       lbCATSelectedSubcat.DisplayMember = ht.Values.ToString();
       lbCATSelectedSubcat.ValueMember = ht.Keys.ToString();
    }
}
private void btncatad_单击(对象发送者,事件参数e)
{
Hashtable ht=新的Hashtable();

对于(int i=0;i您应该在该列表框上使用
SelectedItems
属性,而不是
SelectedValue
。当前您的哈希表只包含一个元素


请参见是否需要哈希表?使用
LINQ
,您可以执行以下操作:

public ObjHoldingData
{
     public Display { get; set; }
     public Value { get; set; }
}

public class Form
{
     Form()
     {
           var dataList = new List<ObjHoldingData>();
           //TODO: Fill list with all the data you pulled

           Listbox1.Datasource = dataList;
           Listbox1.DisplayMember = "Display";
           Listbox1.ValueMember = "Value";
     }

     protected void ButtonClick()
     {
          Listbox2.Datasource = Listbox1.SelectedItems.Cast<ObjHoldingData>().ToList();
          Listbox2.DisplayMember = "Display";
          Listbox2.ValueMember = "Value";               
     }
}
var ht = new Hashtable(ListBox1.SelectedItems.Cast<ObjHoldingData>().ToDictionary(o => o.Display, o => o.Value));