检查表单是否具有焦点或处于活动状态

loz*_*akb 9 c# winforms

我有一个显示通知窗口的表单。但我只想在表单没有焦点或不活动时显示弹出窗口,如下所示:

if (!form.Active)
{
   //Do something
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

Vig*_*aji 9

if (Form.ActiveForm != yourform)
{
   //form not active 
   //do something
}
else
{
   // form active
   // do something
}
Run Code Online (Sandbox Code Playgroud)


vr_*_*ver 6

这可能会对您的追求有所帮助。如果您的表单处于活动状态,它会告诉您。如果您点击表格,它也会告诉您。

using System; 
using System.Text;          // probably not required
using System.Windows.Forms; // probably not required
using System.Threading;     // probably not required   


namespace AppName
{   

    public partial class Form1 : Form
    {
        
        protected override void OnActivated(EventArgs e)
        {
            Console.WriteLine("Form activated");
        }


        protected override void OnDeactivate(EventArgs e)
        {
            Console.WriteLine("Form deactivated");
        }

       // more program etc.

    }
 }
Run Code Online (Sandbox Code Playgroud)