Try using a BindingList:
class MyClass
{
public string Str { get; set; }
public int I { get; set; }
}
BindingList<MyClass> myBindingList = new BindingList<MyClass>();
private void button1_Click(object sender, EventArgs e)
{
myBindingList.Add(new MyClass() { Str = "s1", I = 100 });
myBindingList.Add(new MyClass() { Str = "s2", I = 101 });
myBindingList.Add(new MyClass() { Str = "s3", I = 102 });
myBindingList.Add(new MyClass() { Str = "s4", I = 103 });
myBindingList.Add(new MyClass() { Str = "s5", I = 104 });
MyDataGridView.DataSource = myBindingList;
}
private void button2_Click(object sender, EventArgs e)
{
myBindingList.Add(new MyClass() { Str = "sX", I = 666 });
}
Every time you click Button2, a string will be added to teh DataGridView.