В настоящее время я пытаюсь создать редактор уровня видеоигры и пытаюсь создать его так, чтобы пользователь мог добавлять объекты на экран, а затем манипулировать их расположением и размерами, а что нет. Я начинаю с того, что просто имею класс платформы, и этот метод я использую, чтобы позволить пользователю редактировать расположение платформ:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LevelEditor
{
class Platform : PictureBox
{
private PictureBox platform = new PictureBox();
public Platform(int width, int height, int x, int y)
{
platform.Width = width;
platform.Height = height;
platform.Location = new Point(x, y);
platform.BackColor = Color.Red;
platform.BorderStyle = BorderStyle.FixedSingle;
}
public void drawTo(Form form)
{
form.Controls.Add(platform);
}
public void setPosition(int x, int y)
{
platform.Location = new Point(x, y);
}
private Point MouseDownLocation;
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (e.Button == MouseButtons.Left)
{
MouseDownLocation = e.Location;
}
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.Button == MouseButtons.Left)
{
platform.Left = e.X + platform.Left - MouseDownLocation.X;
platform.Top = e.Y + platform.Top - MouseDownLocation.Y;
}
}
}
}
Проблема в том, что он не работает. Я знаю, что Platform
даже не обнаруживает событие MouseDown, потому что я его отладил. Я не уверен, в чем проблема, и любая помощь приветствуется!