Windows Forms:正在将DataGridView RowCount属性绑定到标签
本文关键字:属性 RowCount 绑定 标签 DataGridView Forms Windows | 更新日期: 2023-09-27 18:00:59
我正在尝试将RowCount属性绑定到标签,以向用户输出DataGridView中显示的当前行数。
我尝试了以下操作:lblArticleCount.DataBindings.Add("Text",datagrid,"RowCount"(;
首先,它似乎会按照我想要的方式工作,但当DataGridView更新并且其中或多或少有行时,标签仍然保持不变。它不显示新的行数。
看来我走错路了。你将如何解决它?我的目的是避免对事件做出反应,手动将新计数设置为标签。难道没有别的办法吗?
谢谢。
为什么不使用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元素也会发生变化。您似乎只实现了单向数据绑定。