2015-05-26 121 views
2

是否有任何方法可以使WinForms窗口在您點擊按鈕時不會切換到活動窗口?我正在嘗試製作一個程序,它可以幫助您爲您輸入長字符串,並且當您點擊一個按鈕時。但是,如果您點擊其中一個按鈕,它將切換到我的程序,並且不會正確輸入文本。不使窗口處於活動狀態按下按鈕

編輯:

我能夠通過執行以下操作來做到這一點。不過,如果我點擊標題欄,它將不會激活窗口,因此存在問題。所以我想我正在尋找的東西,仍然可以讓我處理按鈕點擊,但不激活窗口。

const int WS_EX_NOACTIVATE = 0x08000000; 

protected override CreateParams CreateParams 
{ 
    get 
    { 
     CreateParams ret = base.CreateParams; 
     ret.ExStyle |= WS_EX_NOACTIVATE; 
     return ret; 
    } 
} 

回答

0

http://blogs.msdn.com/b/jfoscoding/archive/2005/09/29/475564.aspx

private const int WM_MOUSEACTIVATE = 0x0021, MA_NOACTIVATE = 0x0003; 

protected override void WndProc(ref Message m) { 
    if (m.Msg == WM_MOUSEACTIVATE) { 
    m.Result = (IntPtr)MA_NOACTIVATE; 
    return; 
    } 
    base.WndProc(ref m); 
} 
+2

不能與一個按鈕控制工作。嘗試一下。 –

+0

試過它只是爲了確保它,如果你點擊一個空的空間以外的東西,它仍然會激活。不完全是我在看。 – 7H3LaughingMan

+0

我假設如果你使用自己的窗口句柄的按鈕控件,你需要截取這些wndproc。 – EricLaw

相關問題