猿问

苦苦挣扎的C#事件示例

我正在努力将一些Events实施到正在处理的代码中,而正在使用的教科书中提供的示例却无法编译(C#Player手册,第3版)。我一直在尝试弄清我对事件/事件处理程序等没有了解的内容,但毫无用处。


我正在使用Microsoft Visual Studio(最新更新),这是我正在尝试进行的代码(我没有编写它-但是我认为弄清楚为什么它不起作用将对我有帮助。我遇到的其他事件问题)。


namespace EventsPractice

{

    class Program

    {

        static void Main(string[] args)

        {

            Point point = new Point();


            point.PointChanged += HandlePointChanged;

        }


    }

    class Point

    {

        private double x;

        private double y;


        public double X

        {

            get { return x; }

            set

            {

                x = value;

                OnPointChanged();

            }

        }

        public double Y

        {

            get { return y; }

            set

            {

                y = value;

                OnPointChanged();

            }


        }


        public event EventHandler PointChanged;


        public void OnPointChanged()

        {

            if (PointChanged != null)

                PointChanged(this, EventArgs.Empty);

        }


        public void HandlePointChanged(object sender, EventArgs eventArgs)

        {

            // Do something Here

        }


    }

}

问题是在网上


point.PointChanged += HandlePointChanged;

我收到错误消息“名称HandlePointChanged在这种情况下不存在。”


我缺少明显的东西吗?为什么不起作用?


侃侃无极
浏览 153回答 2
2回答

忽然笑

HandlePointChanged在类中定义Point。您还需要在右侧引用它,因为您是从class引用它的Program。point.PointChanged += point.HandlePointChanged;如@juharr所述,您需要引用功能的特定实例,因为它不是静态的。您可以通过使函数静态化来避免这种情况。
随时随地看视频慕课网APP
我要回答