문제

나는 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를 등록 할 때 조심해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top