Well my code has an error or better it was missing the form2.showdialog (so that the next line is executed only after the form2 has been hidden/closed with the button). So if you replace .show with .showdialog then it works. Anyway if you want a more precise answer you should provide more precise informations. Which versione of FW are you using 1.x or 2? VS2003 or VS2005. In VS2003 you can refer to the calling form only if it's public declared. Module x public fmain as new frmMain end module then in the form2 button click event handler: fmain.textbox1.text = .... In VS2005 in most cases you can state immediatly the form without instancing it. This means you can have a direct access to frmMain (considering the previous example) unless you're running an instance created by you (than you fallback in the former case). Another way of doing it is by raising an event. In form2 you'll have: ... raisevevent OKClicked() and in form1 private sub ClickOnForm2() handles frm2.OKClicked me.textbox1.text = frm2.textbox1.text end sub or using parameters ... public class frm2eventargs inherits eventargs public t as string end class on form2 before you raise the event... dim e as new frm2eventargs e.t = (text to pass) raiseevent OKClicked(me,e) and then on the mainform private sub frm2OKClick(sender as object,e as frm2eventargs) handles frm2.OKClicked me.textbox1.text = t end sub So as you can see lot of options depending on the approach you want and what you're using.