Скажите пожалуйста, почему обнуляются все переменные класса 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;
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возникло несколько вопросов по работе транзакций в StackExchangeRedis:
Объясните мне, пожалуйста, человеческим языком, без заумных терминов, что такое IoC и DI контейнеры, для чего они используются и как ими пользоваться...
Подскажите, как извлекать данные из базы данных в переменную