Я не очень использую VS, так сказать ручками все создаю (ну надо же учиться), с файлами я немного разобралась, с помещением label'а тоже. 
У меня есть страница default.aspx, которая включает в себя три контрола header.ascx, footer.ascx, menu.ascx следующим образом:
<%@ Register TagPrefix="TOM" TagName="Header" Src="userControls\header.ascx" %>
<%@ Register TagPrefix="TOM" TagName="Menu" Src="userControls\menu.ascx" %>
<%@ Register TagPrefix="TOM" TagName="Footer" Src="userControls\footer.ascx" %>
<form runat="server" method="post">
  <table id="tableMain" class="mainTable" width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
	<tr>
		<td colspan="2"><TOM:Header id="Header" runat="server" /></td>
	</tr>
	<tr>
		<td><TOM:Menu id="Menu" runat="server" /></td>
		<td><h3>Just some text on the page.</h3></td>
	</tr>
	<tr>
		<td colspan="2"><TOM:Footer id="Footer" runat="server" /></td>
	</tr>
  </table>
  </form>
Можно ли реализовать след.
я хочу, чтобы при нажатии кнопки в контроле меню (menu.ascx) страница default.aspx перегружалась бы и в контроле заголовка (header.ascx) в лейбле lblCurrentSection менялся текст. То есть как событие в одном контроле может повлиять на свойства компонента (lblCurrentSection.Text) в др. контроле?
в контроле menu.ascx есть событие:
 void ChooseMenuItem(Object sender, System.EventArgs e)
 {
	try
	{
		TomNews.Header headerObject = new TomNews.Header();
		headerObject.lblCurrentSection.Text = "something";
	}
	catch(Exception xcp)
	{
		lblMenuControl.Text = xcp.Message;
	}
 }
при нажатии на кнопку получаю xcp.Message = "Object reference not set to an instance of an object."
таким образом я пытаюсь дать посетителю возможность ориентироваться в каком разделе он сейчас находится - смотрит в верхнюю часть там надпись типА "раздел Новостей", выбрал другой пункт меню, страница перегрузилась и в header'e теперь другая надпись типА "раздел События".
Или может я все усложняю и это делается как-то проще?