내 페이지에 Label 컨트롤과 사용자 지정 UserControl이 있습니다. 나는 UserControl에 무언가가 나타날 때 레이블의 Text 속성 (예를 들어 Label이 UserControl에 속해 있지 않음)을 변경합니다. 그렇게하는 방법 ?ASP.NET 사용자 지정 UserControl을 통해 페이지 컨트롤을 변경하는 방법?
답변
UserControl이를 다시 사용할 수 있어야하므로 제대로 이렇게하려면, 즉에 페이지 고리가있는 UserControl에서 이벤트를 사용해야합니다
public NewTextEventArgs : EventArgs
{
public NewTextEventArgs(string newText)
{
_newText = newText;
}
public NewText
{
get { return _newText; }
}
}
이 그런 다음 UserControl을에 다음과 같은 이벤트를 추가 :
private void NotifyNewText(string newText)
{
if (NewText != null)
{
NewText(this, new NewTextEventArgs(newText));
}
}
그런 나타나서 그런 다음
public event OnNewText NewText;
public delegate void OnNewText(object sender, NewTextEventArgs e);
사용자 컨트롤에서 이벤트를 발사 t 귀하의 페이지에서 해당 이벤트를 소비하고있는 UserControl 및 페이지는 더 이상 밀접하게 결합되지 않은 :
그런 다음 이벤트를 처리하고 라벨에 텍스트를 설정합니다
이protected void YourControl1_NewText(object sender, NewTextEventArgs e)
{
Label1.Text = e.NewText;
}
가장 좋은 방법은이다 일종의 이벤트를 사용하여 포함 된 페이지에 UserControl이 업데이트되었음을 알립니다.
public class MyControl : UserControl {
public event EventHandler SomethingHappened;
private void SomeFunc() {
if(x == y) {
//....
if(SomethingHappened != null)
SomethingHappened(this, EventArgs.Empty);
}
}
}
public class MyPage : Page {
protected void Page_Init(object sender, EventArgs e) {
myUserControl.SomethingHappened += myUserControl_SomethingHappened;
}
private void myUserControl_SomethingHappened(object sender, EventArgs e) {
// it's Business Time
}
}
이 그냥 기본적인 예제이지만, 개인적으로 할당이 아니라 하나보다 당신이 노력하고 코드 뒤에 디자이너에서 처리 가도록 (듯이), I는 사용자 컨트롤의 이벤트 핸들러를 지정하는 디자이너 인터페이스를 사용하는 것이 좋습니다 in.
나는 그렇게 생각했지만, 내 페이지에서이 사건을 어떻게 잡을 수 있습니까? – Tony
사용자 정의 UserControl에서 이벤트를 발생시켜 점을 찍을 수 있습니다. 이 페이지에는 다음 이벤트 차단하고 그에 따라 레이블의 텍스트 속성을 수정할 수 있습니다
당신은 UserControl을의 포함 된 페이지에 액세스 페이지 속성을 사용할 수 있습니다. 시도 :
((Page1) this.Page) .Label1.Text = "Label1 Text";
- 1. WPF : 사용자 지정 UserControl을
- 2. 사용자 지정 서버 컨트롤을 사용하는 방법
- 3. asp.net 4.0 사용자 지정 401.2 권한이없는 사용자 지정 페이지
- 4. 클래식 ASP.NET 사용자 지정 컨트롤을 MVC
- 5. C# 코드를 통해 사용자 지정 WPF 컨트롤에서 BitmapEffect를 변경하는 방법
- 6. 자동 유효성 검사를 사용하여 사용자 지정 ASP.NET 컨트롤을 만드는 방법
- 7. 안정적이고 빠른 Asp.net 사용자 지정 컨트롤을 만드는 방법
- 8. ASP.NET - 요청한 페이지 이름을 투명하게 변경하는 방법
- 9. ASP.NET MVC에서 문자열로 UserControl을 만드는 방법
- 10. 닷넷 UserControl을 두 컨트롤을 도킹
- 11. 일부 관리 매개 변수를 통해 페이지 제목을 동적으로 변경하는 방법
- 12. jQuery를 통해 asp.net CheckBoxList 컨트롤을 채우는 방법
- 13. 사용자 지정 TextBox 컨트롤의 'type'특성을 변경하는 방법
- 14. 기존 ASP.NET 1.1 사용자 지정 CMS를 ASP.NET 4.0으로 업그레이드하는 방법?
- 15. ASP.Net 1.1에서 페이지 제목을 변경하는 방법?
- 16. ASP.NET 서버 컨트롤 프로젝트없이 사용자 지정 컨트롤을 만들 수 있습니까?
- 17. ASP.NET 사용자 지정 컨트롤
- 18. System.Windows.Forms.Control 또는 UserControl을 서브 클래 싱하는 사용자 지정 컨트롤?
- 19. 나는 내 웹 양식에 사용자 지정 컨트롤을 사용자 지정 컨트롤
- 20. Asp.Net gridview 사용자 지정
- 21. ASP.NET UI 사용자 지정
- 22. 사용자 정의 컨트롤을 소스 창으로 끌어 놓는 방법을 변경하는 방법
- 23. 사용자 지정 컨트롤을 NSArrayController에 바인딩
- 24. 페이징 및 페이지 탐색 컨트롤을 사용하는 사용자 지정 리피터 컨트롤
- 25. 언제 페이지 대신 UserControl을 사용해야합니까?
- 26. C#에서 사용자 지정 TextBox 컨트롤을 만드는 방법
- 27. ASP.Net 사용자 지정 컨트롤
- 28. asp.net webforms 페이지 컨트롤을 통해 열거 할 수 있습니까?
- 29. ASP.Net 사용자 지정 HttpModule
- 30. 사용자 지정 웹 컨트롤. 자식 컨트롤을 렌더링하는 방법
@ Nathan Taylor - 초기 답변을 제거하고 더 나은 이벤트 중심 답변으로 교체했습니다. – GenericTypeTea
좋은 물건! 일반 EventHandler과 함께 간단한 팁만 있으면 더 이상 사용자 정의 eventargs 클래스에 대한 대리인을 만들 필요가 없습니다. 당신은 간단하게'public 이벤트 EventHandler NotifyNewText;'를 할 수 있습니다. –
@Nathan - 고마워요. 나는 그것을 몰랐다! – GenericTypeTea