如何使用DataGridVeiw的列数据填充ListBox?

时间:2016-07-22 03:03:49

标签: c# winforms datagridview listbox

我有两个窗体。在第一种形式中,我有一个DataTable和搜索按钮。我点击搜索,网格填充来自存储过程返回的DataGridView的数据。我需要从此Listbox中获取单列并以另一种形式填写ListBox 如何从第一种形式的索引3处的列值中以第二种形式填充DT = rec.AdvancdSearch(txtname.Text.ToString(),int.Parse(cmblocation.SelectedValue.ToString()), cmbstatus.Text.ToString(), txtfrom.Text.ToString(), txtto.Text, cbmgendr.Text, int.Parse(cbmjob.SelectedValue.ToString())); dataGridView1.DataSource = DT; if (dataGridView1.Rows.Count < 2) { MessageBox.Show("عذراً لم يتم العثور على اى نتائج بحث مطابقة للبينات المدخلة", "عملية البحث", MessageBoxButtons.OK, MessageBoxIcon.Information); lblcount.Text = "لا يوجد نتائج"; } else { lblcount.Text = "نتائج البحث \n" + (dataGridView1.Rows.Count-1); }

{{1}}

1 个答案:

答案 0 :(得分:1)

获取值

作为一个选项,您可以通过以下方式选择DataGridView索引3处的列值:

var list = dataGridView1.Rows.Cast<DataGridViewRow>()
                        .Where(x => !x.IsNewRow)
                        .Select(r => r.Cells[3].Value.ToString())
                        .ToList();

您也可以从DataTable获取值:

var list = dt.Rows.Cast<DataRow>().Select(r => r.Field<string>(3)).ToList();

将值传递给其他表单

获取列表后,您应该以这种方式将值传递给另一个表单:

var f2 = new Form2(list);
f2.Show();

为了能够编写var f2 = new Form2(list);并将列表传递给您的第二个表单,您应该更改该表单的构造函数以接受List<string>类型的值:

List<string> list;
public Form2 (List<string> l)
{
    InitializeComponent();
    list= l;
    this.listBox1.DataSource = list;
}

在ListBox中显示

如上所示,在第二种形式中,它足以使用:

this.listBox1.DataSource = list;

您还可以添加项目:

this.listBox1.Items.AddRange(list.ToArray());