이벤트를 컨트롤에 표시하고 이벤트에 컨트롤의 관련 정보를 포함시킬 수 있습니다. 검색 버튼의 클릭 이벤트 핸들러에서,
public event EventHandler<MyControlSearchEventArgs> SearchClick;
protected override void OnSearchClick(MyControlSearchEventArgs eventArgs)
{
EventHandler<MyControlSearchEventArgs> searchClick = SearchClick;
if(searchClick != null)
searchClick(this, eventArgs);
}
지금 :
public class MyControlSearchEventArgs : EventArgs
{
public MyControlSearchEventArgs(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
public string FirstName { get; private set; }
public string LastName { get; private set; }
}
그런 다음 기존의 사용자 지정 컨트롤 클래스에이 코드를 추가
이 클래스는 이벤트 정보를 포함 적합 다음과 같이 이벤트를 올릴 수 있습니다.
protected void searchButton_Click(object sender, EventArgs e)
{
OnSearchClick(new MyControlSearchEventArgs(
firstNameTextBox.Text,
lastNameTextBox.Text
);
}
콘로의 소비자 이제 컨트롤이 노출하는 SearchClick
이벤트를 수신 할 수 있으므로 컨트롤과 독립적으로 원하는 모든 작업을 수행 할 수 있습니다.
편집 :
public string FirstName
{
get { return firstNameTextBox.Text; }
set { firstNameTextBox.Text = value; }
}
public string LastName
{
get { return lastNameTextBox.Text; }
set { lastNameTextBox.Text = value; }
}
: 당신이 이벤트 핸들러의 외부에서 두 개의 텍스트 상자의 값을 얻으려면
또한, 당신은 당신의 컨트롤의 공용 속성로 노출 될 수 있습니다 그런 다음 일반 컨트롤처럼 이러한 값을 가져 오거나 설정할 수 있습니다.
SearchControl control = (SearchControl)Page.FindControl("searchControl");
control.FirstName = "Programming";
control.LastName = "Hero";
안녕하세요, 답장과 아름다운 코드를 보내 주셔서 감사합니다. 양식에 검색 버튼이없고 다른 양식의 모든 값에 액세스하려는 경우 어떻게해야합니까? 감사합니다, Francis – francis
이벤트를 사용하지 않고 나머지 페이지에 값을 표시하는 방법을 포함하도록 내 대답이 업데이트되었습니다. –