如何将dataGrid列输出到标签?

时间:2014-06-24 17:27:36

标签: c# winforms datagridview datagrid label

我只是想输出一列dataGridView控件。第一个代码如下所示,它创建标签并将它们添加到列表和表单中,一切都很好。但是第二个,它不起作用。如何输出到标签?

    public List<Label> labels;
    private void cmdBot_Click(object sender, EventArgs e)
    {
        labels = new List<Label>();

        for (int i = 0; i <= dataGridView1.RowCount; i++)
        {
            Label gecoLabel = new Label();
            gecoLabel.Text = "test label";
            gecoLabel.AutoSize = true;
            gecoLabel.Location = new Point(100, 10 * i);
            groupBox1.Controls.Add(gecoLabel);

            labels.Add(gecoLabel);
        }

    private void button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i < dataGridView1.RowCount; i++)
        {
            foreach (Label testLabel in labels)
            {
                testLabel.Text = dataGridView1.Rows[i].Cells["link"].FormattedValue.ToString();
            }
        }
    }

3 个答案:

答案 0 :(得分:0)

你似乎在第二个函数中有一个额外的循环,它会导致每个标签从DataGrid设置为 FOR EACH ROW 。但是,既然你没有确切地说 它不起作用,我唯一猜测你可能想要的是这个(请注意,第二种方法转换为1第一种方法中的额外行,但如果您不想这样做,

private void cmdBot_Click(object sender, EventArgs e)
{
    labels = new List<Label>();

    for (int i = 0; i <= dataGridView1.RowCount; i++)
    {
        Label gecoLabel = new Label();
        //**Since you're already looping through every row, why not just set the label text at the same time?
        gecoLabel.Text = dataGridView1.Rows[i].Cells["link"].FormattedValue.ToString();
        gecoLabel.AutoSize = true;
        gecoLabel.Location = new Point(100, 10 * i);
        groupBox1.Controls.Add(gecoLabel);

        labels.Add(gecoLabel);
    }
编辑:就像@Dmitri E所说,你还需要为每个标签分配一个ID。

答案 1 :(得分:0)

Label gecoLabel = new Label();
gecoLabel.Text = "test label";
gecoLabel.ID = "lbl" + i.ToString();

将该行添加到第一个循环。 (每个标签必须有一个ID) 然后,您可以循环浏览标签,找到合适的标签并更新其文本属性

答案 2 :(得分:0)

您必须更改第二个代码:

for (int i = 0; i < dataGridView1.RowCount; i++)
{
            labels[i].Text = dataGridView1.Rows[i].Cells["link"].FormattedValue.ToString();
}

您输入两个循环,并将网格值设置的最后一行输入到标签&#39;文本。