>When I step through the code, apparently the Text value hasn't been updated yet, because it's still empty. I know I could do it by adding another object like an OK button and assign the variable there, but is there a way to do it without adding another object?
>
Hmm...That works OK on my side. I would double check to make sure that your textbox is really named "TextBox". Since it's not working, you can try doing this another way. Every event passes in an object reference from the calling control. If you reference this control (eg. sender), you can get the new text value.
private void TextBox_TextChanged(object sender, System.EventArgs e)
{
System.Web.UI.WebControls.TextBox myControl = (System.Web.UI.WebControls.TextBox) sender;
Session["helloname"] = myControl.Text;
Server.Transfer("Form2.aspx");
}