UserControl의 이벤트
-
21-08-2019 - |
문제
나는 Usercontrols를 처음 접했으며, 내 자신의 컨트롤을 개발하는 동안 설계 시간에 속성 그리드에서 제어의 이벤트를 보여주는 데 문제가 있음을 발견했습니다.내 컨트롤에 일부 이벤트가 있는 경우 속성 표에서 해당 이벤트를 확인하고, Microsoft가 해당 컨트롤에 대해 수행하는 것과 동일한 방식으로 처리기를 갖도록 두 번 클릭합니다.
해결책
내가 착각하지 않으면 자동으로 나타나야합니다. 그래도 프로젝트를 구축했는지 확인하십시오. 그렇지 않으면 개방형 디자이너로 전파되지 않습니다. 그리고 그것이 a인지 확인하십시오 public
이벤트도. (개인/보호 행사는 접근 할 수 없기 때문에 정당하게 나타나지 않아야합니다.)
사용자의 디자인 경험을 더 좋게 만들기 위해 할 수있는 한 가지는 다음과 같은 일을하는 것입니다.
[Description("This event is raised when the user presses the enter key while the control has focus."),
Category("Key")]
public event EventHandler EnterPressed;
"설명"비트는 속성 창의 설명 패널에 멋진 메시지를 넣습니다. "카테고리"비트는 특정 카테고리에 넣습니다 (기본값은 끝에 기타입니다).
그건 그렇고, 언어 나 환경을 지정하지 않았으므로 Visual Studio 2005+에서 C#이 아닌 경우 위의 내용을 수정해야 할 수도 있습니다.
다른 팁
저는 보통 이 패턴을 사용하여 UserControls에서 사용자 정의 이벤트를 만듭니다.
#region MyEvent CUSTOM EVENT
protected virtual void OnMyEvent(MyEventEventArgs e)
{
if (MyEvent != null)
MyEvent(this, e);
}
public delegate void MyEventHandler(object sender, MyEventEventArgs e);
public event MyEventHandler MyEvent;
public class MyEventEventArgs : EventArgs
{
}
#endregion MyEvent CUSTOM EVENT
이는 Microsoft 이벤트와 동일한 명명 규칙을 가지며, 컨트롤 내부에서 OnMyEvent를 실행하고, 사용자 지정 EventArgs를 갖고, 다른 컨트롤에서 MyEvent를 처리할 수 있습니다.
USERCONTROL에서 대의원을 사용하여 메인 페이지 (ASPX 페이지)에서 올려야합니다.이 방법이 작동하지 않으면 usercontrolid를 등록 할 때 조심해야합니다.