2009-09-18 3 views

ответ

1

FYI Я C# парень вам нужно будет преобразовать мое решение в vb.net, или если кто-то хочет изменить этот ответ, который будет набухать. Я мог бы попытаться вспомнить синтаксис, но потом я ошибаюсь и добавляю больше путаницы, чем его ценность.

Это работает, все они делают это заливка страницы на правильный тип:

((MyParentPageType)this.Page).Method() 

С тем, что я бы не рекомендовал это делать. Вы по существу подключили этот пользовательский элемент управления к родительской странице. Вы могли бы как минимум определить интерфейс, который должна реализовать любая страница, содержащая этот элемент управления. На данный момент вы предоставили немного развязки.

Еще лучше, чтобы пользовательский элемент управления мог поднять событие, к которому будет принадлежать родительская страница. Так работают все остальные элементы управления. Вы можете сделать это, как

В вашем UserControl добавить событие:

private static readonly object EventClick=new object(); 
public event EventHandler<ClickEventArgs> Click 
{ 
    add 
    { 
     base.Events.AddHandler(EventClick, value); 
    } 
    remove 
    { 
     base.Events.RemoveHandler(EventClick, value); 
    } 
} 

Тогда ваша страница будет добавить обработчик для события Click, то вы можете сгореть случай, когда вам нужно. Теперь вы отключили свой пользовательский элемент управления со страницы.

0

Не знаю, VB.Net, что хорошо, но в C# на код позади Я хотел бы добавить:

/// <summary> 
    /// Relay 
    /// </summary> 
    public event EventHandler ButtonClick; 

    protected void BtnClick(object sender, EventArgs e) 
    { 
     if (this.ButtonClick != null) this.ButtonClick(sender, e); 
    } 

Я думаю, VB.Net будет (но на самом деле не обязательно!):

Public Event ButtonClick as EventHandler 

    Private Sub BtnClick(ByRef sender as object, ByRef e as EventArgs) 
     RaiseEvent ButtonClick(sender, e) 
    End Sub 

Это предоставляет событие на UserControl, которое может использоваться на странице, чтобы подключиться к нему.

На отметке для кнопки Asp: в UserControl установите OnClick="BtnClick" и он должен передать событие событию в UserControl.

Поднять на странице до OnButtonClick="PageBtnClick" отметку UserControl, которая затем может вызвать метод желаемой страницы.

Смежные вопросы