Of the top of my head, I can't think of a simple answer. I can sort of see why it happens, but it would make more sense if it didn't.
Any way, you can do it by not having the list at all:
dataGridView1.Columns.Add("Col1", "Column 1");
dataGridView1.Rows.Add("Hello");
dataGridView1.Rows.Add("Welcome");
dataGridView1.Rows.Add("GoodBye");
or by iterating though your list.
List<string> list = new List<string>();
list.Add("Hello");
list.Add("Welcome");
list.Add("GoodBye");
dataGridView1.Columns.Add("Col1", "Column 1");
foreach (string s in list)
{
dataGridView1.Rows.Add(s);
}</string></string>
Either way, you will need to manually back-modify any changes into the textboxes from the datagridview