2013-05-29 41 views
0

我创建了一个应用程序,但我有一个焦点问题。表单加载时如何禁用另一个主窗体的焦点?如何禁用WPF中的焦点?

+0

你能有一点点的细节解释你的查询? – Jawahar

+1

你的问题含糊不清。你有任何可以提供给我们的代码吗?或者至少有更好的解释吗? – Abbas

+0

你想要一个非模态窗口在加载时获得焦点吗? – Bas

回答

0

WPF窗体有一个ShowActivated属性。将其设置为false并且表单不会获得焦点。

您也可以覆盖OnActivated方法:

protected override void OnActivated(EventArgs e) 
    { 
     base.OnActivated(e); 

     //Set the window style to noactivate. 
     WindowInteropHelper helper = new WindowInteropHelper(this); 
     SetWindowLong(helper.Handle, GWL_EXSTYLE, 
      GetWindowLong(helper.Handle, GWL_EXSTYLE) | WS_EX_NOACTIVATE); 
    } 

    private const int GWL_EXSTYLE = -20; 
    private const int WS_EX_NOACTIVATE = 0x08000000; 

    [DllImport("user32.dll")] 
    public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); 

    [DllImport("user32.dll")] 
    public static extern int GetWindowLong(IntPtr hWnd, int nIndex); 
+0

SHowActivated = false但仍然集中,但我想用OnActivated Function,如何调用OnActivated函数? –

+0

您必须按照图示覆盖它 –