是否有一种快速方式或软件来查看C#窗口形式事件的触发顺序?

是否有一种快速方式或软件来查看C#窗口形式事件的触发顺序?,c#,events,C#,Events,目前,没有任何方法或软件可以知道所有事件的顺序以及在C#Windows窗体中触发的条件。我需要一个一个地试一下。有没有办法快速了解事件的触发顺序和条件?正如我理解你的问题,你可能会问的问题叫做StackTrace C#有一个名为System.Diagnostics.StackTrace的类,它表示堆栈跟踪,它是一个或多个堆栈帧的有序集合 以下是Microsoft的一个示例,说明如何使用它: class StackTraceSample { [STAThread] static v

目前,没有任何方法或软件可以知道所有事件的顺序以及在
C#
Windows窗体中触发的条件。我需要一个一个地试一下。有没有办法快速了解事件的触发顺序和条件?

正如我理解你的问题,你可能会问的问题叫做StackTrace

C#有一个名为
System.Diagnostics.StackTrace
的类,它表示堆栈跟踪,它是一个或多个堆栈帧的有序集合

以下是Microsoft的一个示例,说明如何使用它:

class StackTraceSample
{
    [STAThread]
    static void Main(string[] args)
    {
        StackTraceSample sample = new StackTraceSample();
        try
        {
            sample.MyPublicMethod();
        }
        catch (Exception)
        {
            // Create a StackTrace that captures
            // filename, line number, and column
            // information for the current thread.
            StackTrace st = new StackTrace(true);
            for(int i =0; i< st.FrameCount; i++ )
            {
                // Note that high up the call stack, there is only
                // one stack frame.
                StackFrame sf = st.GetFrame(i);
                Console.WriteLine();
                Console.WriteLine("High up the call stack, Method: {0}",
                    sf.GetMethod());

                Console.WriteLine("High up the call stack, Line Number: {0}",
                    sf.GetFileLineNumber());
            }
        }
    }

    public void MyPublicMethod () 
    { 
        MyProtectedMethod(); 
    }

    protected void MyProtectedMethod ()
    {
        MyInternalClass mic = new MyInternalClass();
        mic.ThrowsException();
    }

    class MyInternalClass
    {
        public void ThrowsException()
        {
            try
            {
                throw new Exception("A problem was encountered.");
            }
            catch (Exception e)
            {
                // Create a StackTrace that captures filename,
                // line number and column information.
                StackTrace st = new StackTrace(true);
                string stackIndent = "";
                for(int i =0; i< st.FrameCount; i++ )
                {
                    // Note that at this level, there are four
                    // stack frames, one for each method invocation.
                    StackFrame sf = st.GetFrame(i);
                    Console.WriteLine();
                    Console.WriteLine(stackIndent + " Method: {0}",
                        sf.GetMethod() );
                    Console.WriteLine(  stackIndent + " File: {0}", 
                        sf.GetFileName());
                    Console.WriteLine(  stackIndent + " Line Number: {0}",
                        sf.GetFileLineNumber());
                    stackIndent += "  ";
                }
                throw e;
            }
        }
    }
}
类堆栈跟踪示例
{
[状态线程]
静态void Main(字符串[]参数)
{
StackTraceSample样本=新的StackTraceSample();
尝试
{
sample.MyPublicMethod();
}
捕获(例外)
{
//创建一个StackTrace来捕获
//文件名、行号和列
//当前线程的信息。
StackTrace st=新的StackTrace(真);
对于(int i=0;i
但由于优化过程中发生的代码转换,StackTrace可能不会报告预期的那么多方法调用


这是我在Google上搜索windows窗体事件顺序时的第一个结果

我投票将这个问题作为离题题关闭,因为一个非常基本的互联网搜索会立即找到非常详细的答案。链接不错,但不是问题的答案。他想知道所有被解雇的事件。