在DataGridView中单击按钮时,如何显示其他行?

时间:2014-10-09 21:25:58

标签: c# winforms 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中添加一个新行。

我不确定为什么这不会发生,我不知道如何实现这一目标。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您需要为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,但它会告诉您的datagrid有关更改Apple容器中的项目

答案 1 :(得分:0)

与许多UI框架一样,Forms不会自动重绘自身 - 因此必须(通常是明确地)告知数据何时更改并且需要刷新。尝试在事件处理程序结束时调用datagridview1.Refresh()