如何知道表格是否未被选中?

时间:2016-07-27 16:13:21

标签: c# winforms

我有很多问题要区分这么简单的事情。

我需要知道表单当前是否在所有内容之前,即接收密钥条目的表单。

我无法知道它是不是。

我可以检查是否最小化。但它可能只是落后于其他窗口,或者只是没有被选中(例如它是开放的,桌面落后,你点击桌面,然后你仍然看到应用程序,但它没有收到关键输入)。

属性focus对此无效。

这是代码

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

        if (this.Focused)
        {
            gotFocus = true;
            // never reaches tis
        }

1 个答案:

答案 0 :(得分:1)

检查窗口是否是当前活动窗口。

代码:

using System.Runtime.InteropServices; // To use DllImport

...

[DllImport("user32.dll")]
private static extern IntPtr GetForegroundWindow();

        if ((IntPtr)GetForegroundWindow() == this.Handle)
        {
            // Do stuff
        }

请参阅:Use GetForegroundWindow result in an if statement to check user's current window

相关问题