Не загружайте все в событие страницы в элементе управления b, просто поместите метод в элемент управления b для вызова. Затем добавьте событие, управляющее тем, которое потребляет страница, при возникновении события вызовите метод load для элемента управления b.
Редактировать: SampleCode
Хорошо, например, создайте
- страница ASPX
- 2х пользовательских элементов управления
Поместите оба пользовательских элемента управления на страницу aspx.
<cc:control1 runat="server" id="control_one" />
<cc:control2 runat="server" id="control_two" />
Затем в control 1 создайте делегат и событие.
public delegate void MyCustomEvent (EventArgs args);
public event MyCustomEvent MyEvent;
protected void Page_Load(object sender, EventArgs e)
{
MyEvent(e);
}
Итак, у меня возникло событие при загрузке страницы. Таким образом, у вас будет логика, необходимая, когда вы закончите, вызовет событие MyEvent.
На странице вы хотите добавить обработчик для этого события, чтобы при его вызове вы могли что-то с ним сделать.
protected override void OnInit(EventArgs e)
{
control_one.MyEvent += new WebUserControl1.MyCustomEvent(control_one_MyEvent);
base.OnInit(e);
}
void control_one_MyEvent(EventArgs args)
{
control_two.MyCustomLoad();
}
Поэтому, когда страница инициализируется, я добавляю обработчик событий. В обработчике событий я вызываю пользовательский метод для второго элемента управления для загрузки вещи.
Тогда во втором контроле у меня есть:
public void MyCustomLoad()
{
//Stuff only loaded when event is raised and calls this method.
}
Таким образом, это позволяет элементу управления 1 загружать что-то, скажем, что оно выполнено, когда страница знает, что оно выполнено, оно может сказать элементу управления 2 что-то сделать.
Изменить: После обсуждения этого с другом я объясню, что я имею в виду, контролируя порядок.
Вы не можете контролировать порядок событий жизненного цикла страницы. Т.е.: у вас не может быть элемента управления A, который проходит через все его события жизненного цикла страницы, а затем, когда это будет сделано, элемент управления B будет проходить через все его события жизненного цикла страницы.
Если вы покончили с жизненным циклом страницы, вы можете получить степень, как показано в моем примере выше, создать способ управления порядком отображения элементов управления. Вызывая событие (события) в определенные моменты, когда контроль А завершен, вы можете сказать контролю Б сделать что-то.
Промежуточным звеном между этими двумя элементами управления является страница, которая обрабатывает события, вызванные элементом управления A, который вызывает метод для элемента управления B. Вы (хорошо, вы можете взломать его, чтобы сделать это) Элемент управления A указывает элементу управления B сделать что-то, потому что это создает прямую зависимость между двумя элементами управления, что плохо.