Windows Forms:正在将DataGridView RowCount属性绑定到标签

本文关键字:属性 RowCount 绑定 标签 DataGridView Forms Windows | 更新日期: 2023-09-27 18:00:59

我正在尝试将RowCount属性绑定到标签,以向用户输出DataGridView中显示的当前行数。

我尝试了以下操作:lblArticleCount.DataBindings.Add("Text",datagrid,"RowCount"(;

首先,它似乎会按照我想要的方式工作,但当DataGridView更新并且其中或多或少有行时,标签仍然保持不变。它不显示新的行数。

看来我走错路了。你将如何解决它?我的目的是避免对事件做出反应,手动将新计数设置为标签。难道没有别的办法吗?

谢谢。

Windows Forms:正在将DataGridView RowCount属性绑定到标签

为什么不使用RowsAddd和RowsRemoved evnets简单地计算dataGridView中的行数?检查此代码:

 public partial class Form1 : Form
{
    int rowsCount;
    public Form1()
    {
        InitializeComponent();
        dataGridView1.Columns.Add("col1", "Column 1");
        dataGridView1.RowsAdded += new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded);
        dataGridView1.RowsRemoved += new DataGridViewRowsRemovedEventHandler(dataGridView1_RowsRemoved);
    }
    private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
    {
        rowsCount++;
        CountRows();
    }
    private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
    {
        rowsCount--;
        CountRows();
    }
    private void CountRows()
    {
        label1.Text = String.Format("Number of all rows {0}", rowsCount);
    }
}

您必须实现http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx

这可能不是你想要的,但它应该有效:

        Label showRowCount = new Label();
        DataGridView dgv = new DataGridView();
        dgv.RowsAdded += new DataGridViewRowsAddedEventHandler(dgv_RowsCountChanged);
        dgv.RowsRemoved += new DataGridViewRowsAddedEventHandler(dgv_RowsCountChanged);
    }
    void dgv_RowsCountChanged(object sender, DataGridViewRowsAddedEventArgs e)
    {
        showRowCount.Text = dgv.RowCount;
    }

它不起作用的原因是因为数据绑定只是一条单行道。数据绑定通常是双向绑定,如果UI元素发生变化,则会通知业务对象,反之,如果业务对象发生变化,那么UI元素也会发生变化。您似乎只实现了单向数据绑定。