CAFE

Winform & WPF | C# 질문

Re:폼 로드 이벤트 말고 완전히 로드된후에...

작성자쌍둥삼촌|작성시간05.09.08|조회수134 목록 댓글 0

쫌 지난 질문인데 답변이 안달려있어 답변을 써보려고 해요~

 

 

완전로드(~^^) 이벤트는 아니지만 다른 방법 ( or 꽁수) 으로 비슷하게나마 구현한적이 있는데요

100% 맞는건 아니지만 어느정도 비슷하게나마 사용할 수 있지 않을까 싶네요....

 

 

1. 동적으로 Form의 Activated Event를 등록 및 해제

 아시다 싶이 Activated 라는 이벤트가 Form Load가 된뒤에 처음 발생을 하고, 

 이 후에 활성화 될때마  다  Event가 발생을 하지요

 

 그래서 Load Event Handler에서 Activated 를 등록해주고

 Activated Event Handler (정확이 하자면 Delegate) 에서 해제를 해주는 겁니다.

 

 ex) Private Sub Form1_Load(........)

           AddHandler Me.Activated, AddressOf Form_Activated

       End Sub

 

       Private Sub Form_Activated(..........)

           RemoveHandler Me.Activated, AddressOf Me.Form1_Activated

           .......

           이 후 처리.....

       End Sub

 

2. Timer를 이용

    Private Sub Form1_Load(.........)
        AddHandler Timer1.Tick, AddressOf Me.Timer1_Tick

        Timer1.Enabled = True

    End Sub

 

    Private Sub Timer1_Tick(..........)
        Timer1.Enabled = False

        RemoveHandler Timer1.Tick, AddressOf Me.Timer1_Tick

 

        Form_Activated()
    End Sub

 

    Private Sub Form_Activated()

           .......

           이 후 처리.....
    End Sub

 

   % 동적으로 Event를 등록안해줘도 됩니다. Timer를 시작 및 중지만 시켜줘도 되거든요 %

 

테스트 해보면 알겠지만 1번과 2번은 폼의 완전한 로드(?)에서의 차이가 보입니다.

 

1번 방법의 문제는 '완전히 로드된 후에...' 가 아닌

타이틀 바가 보이면서 Activated Event를 발생한다는 것 입니다.

다시 말해 Form_Activated() 에서 BreakPoint로 잡아두면 폼의 타이틀만 보인다는 거죠

 

2번은 폼이 완전히 로드된(제대로 보인뒤에) 후에 Timer Event가 발생합니다.

Timer는 Thread를 이용하기 때문에 그런것 이겠지요.....

 

3번째 방법은

뭐 그냥 Thread를 이용해야겠죠.....

 

 

윽... 별거 아닌데 글만 길어졌네요

할 일이 없어 시간 보낼겸 해서 그런거니 이해해 주세요~~~^^

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼