I was going to edit Mike's more, but here's a cleaner answer instead (sorry Mike!):
Basically there is no reason to make a new spsite object, also you should never really call .items (like ever, it will go get the entire list), and you don't need to call dispose on a spsite.Rootweb...
Anywhere here you go:
SPWeb oSPWeb = SPContext.Current.Site.RootWeb;
SPList list = oSPWeb.Lists["SampleList"];
SPListItem ItemToModify = list.GetItemById(4);
ItemToModify["Title"] = TextBox1.Text;
As a side comment, since I don't have enough rep over here to comment on the question post: It isn't a good idea to do list.items.add() (MSOCAF may actually even error on this, don't remember), as calling .items will pull the entire list. Do this instead: http://sharepointdevsolutions.blogspot.com/2010/02/adding-items-to-large-lists.html