【问题标题】:Putting elements via array into a Listbox通过数组将元素放入列表框
【发布时间】:2015-03-20 02:01:39
【问题描述】:

首先显示我的代码:

datTable = new DataTable();
sqlCmd = new SqlCommand("SELECT [CustomerId] FROM
[DataSource]", connection);
sqlDatAdapter = new SqlDataAdapter(sqlCmd.CommandText, connection);
            sqlDatAdapter.Fill(datTable);
            customer.DisplayMember = "CustomerId";
            customerListbox.DataSource = datTable;

这样可以很好地用 SQL 数据库中的列填充列表框。我想做的是一个循环,他会自动填充多个列表框。它适用于 SQL 语句的循环,但我该如何处理该行

customer.DisplayMember = "CustomerId"

有没有办法或让我一遍又一遍地复制这段代码并手动更改行?我试图创建一个对象数组并用 customer.DisplayMember 等填充它,但这不起作用。

我的意思是:我会不止一次地执行这段代码,而且每次只是列表框和 SQL 列发生变化。所以用不同的列填充不同的列表框。所以也许是一个数组或一个包含对象的列表 customer.DisplayMember、product.DisplayMember 等

【问题讨论】:

  • 什么?请更清楚
  • 好的已编辑。意味着我想用“CostumerId”列填充第一个列表框,用另一列填充第二个列表框,依此类推。我可以以某种方式循环执行此操作吗?
  • 添加更多代码。什么是客户? (在 customer.DisplayMember 中)
  • 对不起。应该是“客户 ID”

标签: c# arrays winforms listbox


【解决方案1】:

如果我理解您的意思,您想填充多个列表框。您可以通过传入列表框/数据成员的字典和数据表来创建填充所有列表框的方法。像这样的:

    private void PopulateListBoxes(Dictionary<ListBox, string> ListBoxCollection, DataTable CustomerTable)
    {

        foreach(var key in ListBoxCollection.Keys)
        {
            key.DisplayMember = ListBoxCollection[key];
            key.DataSource = CustomerTable;
        }
    }

你可以这样调用:

//this DataTable should contain data for all list boxes
sqlDatAdapter.Fill(dataTable);
Dictionary<ListBox, string> myListBoxes = new Dictionary<ListBox, string>();

//add your existing list boxes here with the corresponding data member
myListBoxes.Add(customerListBox, "CustomerID");
myListBoxes.Add(productListBox, "ProductID");
//add more here

PopulateListBoxes(myListBoxes, dataTable);

【讨论】:

  • 当我理解你的正确时:我不想填充列表框。他们已经在那里了。只需用不同的行填充每个。与列表框相同的行数。
  • 此代码适用于此。 myListBoxes.Add() 中的第一个参数是现有列表框,第二个参数是特定列表框的显示成员的名称。
  • 好的,那我理解错了,但是我必须一遍又一遍地为每个列表框编写 SQL 命令,对吗?所以每次填一张数据表
  • 否 - 如果数据表包含填充列表框所需的所有数据,您只需将其传递给方法,并告诉它使用哪个数据成员。请参阅上面的编辑。
猜你喜欢
  • 2018-09-09
  • 1970-01-01
  • 2023-04-06
  • 2022-01-16
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 2014-10-13
相关资源
最近更新 更多