在OnFocusChanged()中访问WinForm

时间:2014-09-17 22:46:07

标签: c# .net windows winforms

我创建了一个列表" exe"和Main()中的新WinForm。我需要在OnFocusChanged()中访问它们。这个想法是创建一个隐藏的WinForm,当" firefox"有焦点,将显示WinForm。我的WinForm有一个方法update(),用于显示WinForm。如果我打电话给" form.update()"在Main中,WinForm出现,但我无法在OnFocusChanged()中访问它。

如何在OnFocusChanged()中访问列表和WinForm对象?感谢。

namespace WinForm1
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            List<string> exe = new List<string>();

            Form1 form = new Form1();
            Application.Run(form);
        }
        static private void OnFocusChanged(object sender, AutomationFocusChangedEventArgs e)
        {
            string program = "firefox";
            if(exe.Any(program.Contains)
            {
                form.update(true);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

无法从OnFocusChanged事件处理程序访问

exe,因为它在Main方法的范围内是本地的。

您需要创建列表变量static并将其置于方法

之外
...
static List<string> exe = new List<string>();

[STAThread]
static void Main()
...

答案 1 :(得分:0)

您可以使用System.Diagnostics.Process将此想法存档

首先获取所有进程的列表并检查进程名称

        Process[] processes = System.Diagnostics.Process.GetProcesses();

        if (processes.Any(c => c.ProcessName == "firefox"))
        {
           //your update code
        }