Обнуляются переменные класса

235
10 февраля 2018, 21:26

Скажите пожалуйста, почему обнуляются все переменные класса CircleFigure?

Суть такова,в этом классе создается окружность, второй класс наследует геометрические значения этой окружности (MouseListener), перехватывает события на экране, передавая обратно в CircleFigure.

После завершения вызванных методов в MouseListener, в CircleFigure обнуляются все переменные.

Почему?

    public class CircleFigure
    {
        public delegate void MouseEnterCircle(object sender, MouseEventArgs e);
        public delegate void MouseClickCircle(object sender, MouseEventArgs e);
        public event MouseEnterCircle MouseEnter;
        public event MouseClickCircle MouseClick;
        public bool IsMouseDown = false;
        protected void Enter(Point CursorPos)
        {
            if (MouseEnter != null)
            {
                MouseEnter(this, new MouseEventArgs(MouseButtons.None, 0, CursorPos.X, CursorPos.Y, 0));
            }
        }
        protected void MouseClickCir(MouseButtons Button, int ClicksCount, int X,int Y)
        {
            if (MouseClick != null)
            {
                MouseClick(this, new MouseEventArgs(Button, ClicksCount, X ,Y , 0));
            }
        }
        private double Radius_;
        private double X_;
        private double Y_;
        private Point CursorLocation_;
        private Color4 Color_;
        private bool EnteredArea = false;
        public void CatchMouseEventCircle(MouseEventArgs e)
        {
            if (EnteredArea == true)
            {
                switch (e.Button)
                {
                    case MouseButtons.Left:
                        MessageBox.Show("11");
                        MouseClickCir(MouseButtons.Left, e.Clicks, e.X, e.Y);
                        return;
                    case MouseButtons.Right:
                        MouseClickCir(MouseButtons.Right, e.Clicks, e.X, e.Y);
                        return;
                }
            }
        } 
        public Point CursorLocation
        {
            get
            {
                return CursorLocation_;
            }
            set
            {
                this.CursorLocation_ = value;
                double D = Math.Pow((CursorLocation_.X - X_), 2.0f) + Math.Pow(CursorLocation_.Y - Y_, 2.0f);
                if(D<=Math.Pow(Radius_,2.0f))
                { 
                    Enter(new Point(CursorLocation_.X, CursorLocation_.Y));
                    EnteredArea = true;
                }
                else
                {
                    EnteredArea = false;
                }
            }           
        }
        public double X
        {
            get
            {
                return X_;
            }
            set
            {
                this.X_ = value;
            }
        }
        public double Y
        {
            get
            {
                return Y_;
            }
            set
            {
                this.Y_ = value;
            }
        }
        public double Radius
        {
            get
            {
                return Radius_;
            }
            set
            {
                this.Radius_ = value;
            }
        }
        public Color4 Color
        {
            get
            {
                return Color_;
            }
            set
            {
                this.Color_ = value;
            }
        }
        public CircleFigure()
        {
        }
        public CircleFigure(double X, double Y, double Radius, Color4 Color)
        {
            X_ = X;
            Y_ = Y;
            Radius_ = Radius;
            Color_ = Color;
        }
        public void DrawCicrle()
        {
            GL.Begin(PrimitiveType.TriangleFan);
            GL.Color4(Color_);
            GL.Vertex2(X_, Y_);
            for (int i = 0; i < 360; i++)
            {
                GL.Vertex2(X_ + Math.Cos(i) * Radius_, Y_ + Math.Sin(i) * Radius_);
            }
            GL.End();
        }
    }
    public class MouseListener : CircleFigure
    {
        protected MouseListener()
        {
        }
        public MouseListener(GLControl control)
        {
            control.MouseMove += Control_MouseMove;
            control.MouseDown += Control_MouseDown;
            control.MouseUp += Control_MouseUp;
            control.MouseClick += Control_MouseClick;
        }
        private void Control_MouseClick(object sender, MouseEventArgs e)
        {
            CatchMouseEventCircle(e);
        }
        private void Control_MouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                MainFormScheme.ActiveForm.Text = e.Location.ToString();
            }
            catch { }
            CursorLocation = new Point(e.X, e.Y);
        }
        private void Control_MouseUp(object sender, MouseEventArgs e)
        {
           IsMouseDown = false;
        }
        private void Control_MouseDown(object sender, MouseEventArgs e)
        {
           IsMouseDown = true;
        }
    }
READ ALSO
StackExchange.Redis: несколько вопросов по транзакциям

StackExchange.Redis: несколько вопросов по транзакциям

Возникло несколько вопросов по работе транзакций в StackExchangeRedis:

186
IoC и DI контейнеры в C#

IoC и DI контейнеры в C#

Объясните мне, пожалуйста, человеческим языком, без заумных терминов, что такое IoC и DI контейнеры, для чего они используются и как ими пользоваться...

208
Извлечение данных из базы в переменную c# wpf [требует правки]

Извлечение данных из базы в переменную c# wpf [требует правки]

Подскажите, как извлекать данные из базы данных в переменную

149
Как вывести рандомные переменные JS

Как вывести рандомные переменные JS

У меня есть много разных фруктовАпельсин, Банан, Яблоки

270