How to access dynamically created control's value on button click event

I have created on web page using asp.net.After selecting particular student(name),from that student's id ,I am fetching all subject offered to that student from database.User can append/write marks got/achieved to that student(Taking input from user).After clicking on button,want to save data. Here I have created dynamical control but I unable to access it on button click event.How to do that?

Code ASPX:

<asp:Panel ID="PnlStudent" runat="server" Visible="false">
<asp:Table ID="tblStudent" runat="server" Width="600px">
<asp:TableRow>
<asp:TableCell Height=" 32px" ForeColor="#32417a" BackColor="#e5e5e5" Width="156px">
Subject
</asp:TableCell>
<asp:TableCell Height=" 32px" ForeColor="#32417a" BackColor="#e5e5e5" Width="156px">
Marks Optined
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</asp:Panel>

Code in Cs file :

protected void ddlStudent_SelectedIndexChanged(object sender, EventArgs e)
{
// fetch from Student table


if (dsStudent != null)
{
DataTable dt = dsStudent.Tables["Student"];
if (dt.Rows.Count > 0)
{
PnlStudent.Visible = true;
foreach (DataRow dr in dt.Rows)
{
TableRow NewRow1 = new TableRow();

TableCell NewCell1 = new TableCell();
NewCell1.Width = Unit.Pixel(156);
NewCell1.Height = Unit.Pixel(32);
NewCell1.ForeColor = System.Drawing.Color.LightSlateGray;
NewCell1.BackColor = System.Drawing.Color.LightGray;

Label newLable1 = new Label();
newLable1.Text = dr["Subject"].ToString();


NewCell1.Controls.Add(newLable1);
NewRow1.Cells.Add(NewCell1);

TableCell NewCell2 = new TableCell();
NewCell2.Height = Unit.Pixel(32);
NewCell2.BackColor = System.Drawing.Color.LightGray;

TextBox txtBox1 = new TextBox();

NewCell2.Controls.Add(txtBox1);
NewRow1.Cells.Add(NewCell2);
tblStudent.Rows.Add(NewRow1);
}


}
}
}


protected void BtnSave_Click(object sender, EventArgs e)
{
}