将数据从一个列表框传输到另一个列表框#

时间:2010-03-13 15:05:45

标签: c# database listbox

好的,所以我有2个列表框,一个连接到数据库,另一个不是。

我希望能够将连接到数据库的列表框中的所选项目发送到不存在的项目。

我写了这段代码

listBox2.Items.Add(listBox1.SelectedItem);

但不是copyin项目我得到“

System.Data.DataRowView

有人有什么建议吗?

5 个答案:

答案 0 :(得分:0)

我没有靠近我的VS安装来检查.NET库,但我猜你还需要一个额外的属性来获取值,例如listBox1.SelectedItem.Value

答案 1 :(得分:0)

你能展示第一个和第二个lsibox声明的代码吗?其他控件具有DisplayName和ValueName等属性 - 数据行中的哪些列将显示在列表框中以及将被视为值的内容。在您的情况下,问题是第二个lisbox不知道应该在其中显示哪个列。

<强>更新: 当listBox2.Items.Add(listBox1.SelectedItem)执行时,实际原始数据行(来自数据库)被复制到第二个列表框。如果你想让另一个列表框没有连接到从DB获得的值,你需要在放入第二个列表框之前创建它们的副本。

答案 2 :(得分:0)

我做了这个简单的程序:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
        listBox1.Items.Add("1");
        listBox1.Items.Add("2");
        listBox1.Items.Add("3");
    }

    void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        listBox2.Items.Add(listBox1.SelectedItem);
    }
}

它没有问题。所以我认为您的程序不起作用,因为您的项目类型是System.Data.DataRowView,并且无法转换为字符串。

答案 3 :(得分:0)

private void CopySelItems(ListBox from, ListBox to)
    {
        for (int i = 0; i < from.SelectedItems.Count; i++)
        {
            to.Items.Add(from.SelectedItems[i].ToString());
        }


    }

答案 4 :(得分:0)

这是将列表框加载到另一个列表框并同时从sorce列表框中删除数据的最简单方法

int mCount = ListBox1.Items.Count;
for (int i = 0; i <= mCount - 1; i++)
{
    if (ListBox1.Items[i] == ListBox1.SelectedItem)
    {
        ListBox2.Items.Add(ListBox1.SelectedItem);
        ListBox1.Items.Remove(ListBox1.SelectedItem);
        mCount=mCount - 1;
        i=i - 1;
    }
}