我如何能找到活动的子窗口?能找到、窗口

2023-09-07 09:37:35 作者:仙女养的猪

我如何找到活动的子窗口(如在模态对话框焦点编辑)。我知道如何枚举子窗口,但我不知道如何来检测,如果一个子窗口被激活(焦点)。

How can I find the active child window (like focus Edit in modal dialog). I know how to enumerate child windows, but I don't know how to detect if a child window is active (focus).

推荐答案

基本上它只是一个简单的LINQ查询:

Basically it's just a simple Linq query:

      var active = (from form in Application.OpenForms.OfType<Form>()
                    where form.Focused
                    select form).FirstOrDefault();

使用活动可以为空或形式。只是一个简单的例子很少形式:

Where active can be null or a form. Just a short example with few forms:

class Program
{
  static void Main(string[] args)
  {
    for (int i = 0; i < 10; i++)
    {
      Form sample = new Form();
      sample.Text = i.ToString();
      sample.Show();
    }

    while (true)
    {
      var active = (from form in Application.OpenForms.OfType<Form>()
                    where form.Focused
                    select form).FirstOrDefault();

      if (active != null)
        Console.Write(active.Text);

      Application.DoEvents();
      Thread.Sleep(100);
    }

  }
}