2014-03-27 4 views
0

UserControl이 앞으로 가져올 때 호출되는 이벤트를 찾아야합니다.Winforms - UserControl OnGotFocus 이벤트

나는 OnLoad 이벤트를 보았지만 처음로드 할 때 작동합니다.

OnGotFocus도 호출하지 않습니다.

누구나?

+4

코드 공유? 'GotFocus'에 대한 이벤트 처리기를 등록 했습니까 – Boklucius

+0

정면으로 가져 왔습니까? – Pseudonym

+1

무엇을하려고합니까? 잠재적 인 대안을 도울 수 있도록 기능을 설명하십시오. –

답변

0

UserControl의 상위 항목은 누구입니까?

UserControl이 포함 된 컨트롤로 처리 할 수 ​​있습니다. UserControl이 TabControl에 있으면 enterPage 이벤트를 관리하거나 WindowsForm이 해당 폼을 포함하는 폼에서 UserControl 이벤트를 트리거해야하는 경우입니다. 나는 이것을한다.

UserControlStandardMacchine uc = null; 
private void tabPageMacchine_Enter(object sender, EventArgs e) 
{ 
    if (uc!= null) 
    { 
     uc = new UserControlStandardMacchine(); 
        uc.Parent = this; 
        uc.Dock = DockStyle.Fill; 
        uc.refreshData(); 
    } 
    else 
    { 
     uc.refreshData(); 
    } 
} 
0

낮은 수준의 접근 방식은 WndProc 메서드를 재정의하는 것입니다. 이렇게하면 양식이 처리하는 모든 유형의 메시지를 제어 할 수 있습니다.

활성화 메시지의 번호는 0x006입니다. 사용 가능한 프로세스 목록에 대한 링크 아래 : http://wiki.winehq.org/List_Of_Windows_Messages

샘플 구현은 다음과 같을 수 있습니다

public partial class Form2 : Form 
{ 
    private const int WM_ACTIVATE = 0x006; 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    protected override void WndProc(ref Message m) 
    { 
     if (m.Msg == WM_ACTIVATE) 
     { 
      Console.WriteLine("Activate"); 
     } 
     base.WndProc(ref m); 
    } 
} 
관련 문제