문제

개요

좋아, Google에서 검색해 봤는데 벌써 엄청난 결과가 나올 것으로 예상하고 있어요 아니요!! 하지만 때로는 사람들의 머릿속에 이상한 작은 보석 같은 지식이 숨어 있을 수 있다는 것을 알기 때문에 물어봐야 한다고 생각했습니다 ^_^

나는 연구용 책에 있는 몇 가지 연습을 통해 작업 중이며 이 특정 연습은 사용자 컨트롤입니다.컨트롤을 함께 엮어 이에 대한 DefaultEvent를 설정하려고 합니다(이전 컨트롤에 대해 이 작업을 수행함). 따라서 컨트롤을 두 번 클릭하면 생성되는 기본 이벤트는 내가 지정하는 대로 됩니다.

메모: 이는 표준 사용자 컨트롤(.ascx)입니다. 아니다 사용자 정의 렌더링된 컨트롤.

현재 코드

클래스 및 이벤트 정의는 다음과 같습니다.

[System.ComponentModel.DefaultEvent("OKClicked")]
public partial class AddressBox : System.Web.UI.UserControl
{
    public event EventHandler OKClicked;

현재 결과

이제 ASPX 페이지에 있는 컨트롤을 두 번 클릭하면 다음이 생성됩니다.

    protected void AddressBox1_Load(object sender, EventArgs e)
    {

    }

내가 기대했던 것과는 다릅니다!그래서 내 질문은 다음과 같습니다.

UserControl에 대해 DefaultEvent를 정의할 수 있습니까?해킹인가요?지원되지 않는다면 이유가 있나요?


사이드 노트:코드에 밑줄을 어떻게 넣나요?문자를 넣고 탈출할 수 없는 것 같나요?

도움이 되었습니까?

해결책

여기에는 가능한 (마틴이 그랬던 것처럼) 테스트 없이 대답하세요.

리플렉터에서는 DefaultEventAttribute가 상속을 허용하는 것을 볼 수 있습니다.리플렉터에서 UserControl 클래스의 기본 이벤트가 Load 이벤트로 설정되어 있음을 알 수 있습니다.

따라서 가능한 이유는 OKClick의 기본 이벤트로 사용자 컨트롤을 장식하더라도 기본 이벤트가 Load인 UserControl에서 상속되기 때문에 VS가 여전히 기본 이벤트가 로드라고 생각할 수 있다는 것입니다.

무슨 일이 일어나고 있는지에 대한 높은 수준의 추측입니다.

다른 팁

좋아, UserControl이 아닌 WebControl에서 상속하는 것을 확인했습니다.모두 잘 작동했습니다.

처럼 보인다 대런 코프 이것 때문에 왕관을 가져가세요!의견을 보내주셔서 감사합니다!

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