UPDATE:
For testing purposes, try doing GridView1.DataBind(); at the begining of your method.
Try debugging like this:
Set a breakpoint at the end of the Button1_Click method.
Run the site in debug mode (F5).
When executions stops at end of Button1_Click, open the Immediate Window located at bottom of screen.
Type there:
GridView1.Rows and see if it contains the number of rows it should.
Should be something like:
System.Web.UI.WebControls.GridViewRowCollection}
Count: 53 <-- number of rows
If it does return more than 0 rows then type:
GridView1.Rows[0].Controls and see if it returns the right number of controls on a row.
I could access controls on a row directly using GridView1.Rows[2].Controls[n] where n is the order of the control in the row.
Also try (TextBox)GridView1.Rows[0].FindControl("numTC") and see what it returns.