2014-03-27 102 views
0

我需要找到在UserControl前面調用的事件。Winforms - UserControl OnGotFocus事件

我看到OnLoad事件,但它在第一次加載時起作用。

OnGotFocus也不會調用。

有人嗎?

+4

任何代碼共享?您是否註冊了「GotFocus」的事件處理程序? – Boklucius

+0

Define帶在最前面? – 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); 
    } 
}