【问题标题】:C# - Generic event handler to move pictureboxes created at runtime with mouseC# - 使用鼠标移动在运行时创建的图片框的通用事件处理程序
【发布时间】:2021-09-22 03:49:38
【问题描述】:

我是使用 Visual Studio 2019 的 C# 初学者,目前正在创建游戏,我正在努力寻找一种方法来创建通用 mousedown/mousemove 事件处理程序,以通过类构造函数使用鼠标移动在运行时创建的图片框

我已经想出了如何按我的意愿移动它们,但现在它只在我单击表单而不是图片框本身时才有效,这远非理想。有没有办法创建一个通用事件处理程序,该处理程序能够确定单击哪个图片框并仅移动那个?我该怎么做呢?如果有帮助,我已将图片框添加到 Form1 的控件中以显示它们。该代码是在运行时如何使用以下行创建图片框的类构造函数:

"new Piece(new Position(100, 100), 200, 300, form);"

        public Piece(Position pos, int xSize, int ySize, Form form)
    {
        this.pos = pos;
        this.xSize = xSize;
        this.ySize = ySize;
        pic = new PictureBox();
        pic.BackColor = Color.LightBlue;
        pic.Size = new System.Drawing.Size(xSize, ySize);
        UpdateImgPos();
        pic.Visible = true;
        form.Controls.Add(pic);
        Pieces.Add(this);
        childPlatforms = new List<Platform>();
    }

【问题讨论】:

  • 您能否分享有关如何创建运行时图片的代码?
  • 请分享代码,以及您用于设计的引擎。
  • @ShervinIvari 我已经添加了您要求的代码!
  • @CSakura 我已经添加了代码!我正在使用 Windows 窗体使用 Visual Studio 2019

标签: c# mouseevent picturebox


【解决方案1】:

如果我理解正确,那么您可以使用图片框的事件。参数发送者是触发事件的控件。

PictureBox pictureBox = new PictureBox();
// add image, set start location, etc...
pictureBox.Size = new System.Drawing.Size(100, 50);
pictureBox.MouseDown += PictureBox_MouseDown;
this.Controls.Add(pictureBox);

// ...

private void PictureBox_MouseDown(object sender, MouseEventArgs e)
{
      // cast object sender to PictureBox pictureBox
      if (!(sender is PictureBox pictureBox)) return;

      pictureBox.Location = CursorPosition;
}

【讨论】:

  • 这似乎可行!但我仍然有点坚持如何获得“pictureBox.MouseDown += PictureBox_MouseDown;”由于图片框是在 Form 类之外的类构造函数中创建的,所以如果有帮助,我已经添加了如何创建它们的代码,并提前感谢您的帮助。
猜你喜欢
  • 2014-05-15
  • 1970-01-01
  • 2016-01-05
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 2021-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多