[英]How come additional rows aren't being shown when button is clicked in DataGridView?
这是我的代码:
namespace UpdateDataGridView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<Apple> apples = new List<Apple>();
private void button1_Click(object sender, EventArgs e)
{
apples.Add(new Apple { Color = "Red"});
dataGridView1.DataSource = apples;
}
}
public class Apple
{
public string Color { get; set; }
}
}
我希望每次按下按钮时,都会向dataridview添加新行。
我不确定为什么这种情况不会发生,我也不知道如何实现。 任何帮助深表感谢。
您需要发出事件以重绘datagrid。 接下来,如果您的数据源不大,最简单的方法是:
private void button1_Click(object sender, EventArgs e)
{
apples.Add(new Apple { Color = "Red"});
dataGridView1.DataSource = null;
dataGridView1.DataSource = apples;
}
如果您的集合太大,则最好将容器从List更改为ObservableCollection
ObservableCollection<Apple> apples = new ObservableCollection<Apple>();
private void button1_Click(object sender, EventArgs e)
{
apples.Add(new Apple { Color = "Red"});
dataGridView1.DataSource = apples;
}
在代码中,您可以像使用List一样使用ObservableCollection,但是它将告诉您的数据网格有关更改apples容器中项目的信息
像许多UI框架一样,Forms不会自动重绘自身-因此必须(通常是明确地)告知何时数据已更改并且需要刷新。 尝试在事件处理程序的末尾调用datagridview1.Refresh()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.