Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在winforms中自动跟踪动态表单_C#_Winforms - Fatal编程技术网

C# 在winforms中自动跟踪动态表单

C# 在winforms中自动跟踪动态表单,c#,winforms,C#,Winforms,我有一个应用程序,有两个表单在应用程序启动时打开,第三个表单在运行时添加 我还有一个类库,它当前监视单个窗体的活动。下面的代码片段适用于以下应用程序:- static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form[] f = new Form[2]; f[0]

我有一个应用程序,有两个表单在应用程序启动时打开,第三个表单在运行时添加

我还有一个类库,它当前监视单个窗体的活动。下面的代码片段适用于以下应用程序:-

static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form[] f = new Form[2];
        f[0] = new Form1();
        f[1] = new Form2();
        f[0].Show();

        AppContext nvca = new AppContext(new Form1(), new Form2());

        Application.Run(nvca);


    }
AppContext类位于类库中,我试图在其中捕获应用程序的所有形式,无论是静态的还是运行时的:-

public class AppContext:ApplicationContext
    {
        public static Form[] AvailForms = null;
        public  AppContext(params Form[] forms)
        {
            AvailForms = forms;
            UAction ua = new UAction();
            foreach (Form f in forms)
            {
                for (int i = 0; i < f.Controls.Count; i++)
                {
                    ua.setClickHandlerAsync(f.Controls[i]);
                }
            }
        }

        public void setClickHandlerAsync(Control item)
        {
            //Have to recursively get all the element to wrap the click listener. 
            item.MouseClick += ClickHandlerAsync;
        }

        private async void ClickHandlerAsync(object sender, MouseEventArgs e)
        {
            Console.WriteLine("Click Handler called");
    }   
    }
公共类AppContext:ApplicationContext
{
公共静态表单[]AvailForms=null;
公共AppContext(参数表单[]表单)
{
有效形式=形式;
UAction ua=新的UAction();
foreach(表格f中的表格)
{
对于(int i=0;i
我正在寻找一种方法,通过它我可以跟踪所有已经添加到应用程序中或在运行时添加的表单

我尝试了ApplicationContext,但它无法捕获win事件,如单击、文本更改、表单事件,即使所有事件处理程序都已正确设置


如有任何帮助,我们将不胜感激。

也许您正在寻找?请详细说明你将要做什么,并让我们知道你面临的问题。我已经用更多细节修改了我的帖子。你可以为你的所有表单创建一个基本表单。然后,您可以从基本窗体跟踪任何您想要的内容。看一个例子,你为什么要为AppContext传递Form1和Form2的新实例?为什么不通过f[0]和f[1]呢?非常感谢@Reza。成功了!