C# - 通用事件处理程序,用于移动在运行时使用鼠标创建的图片框
C# - Generic event handler to move pictureboxes created at runtime with mouse
我是使用 Visual Studio 2019 的 C# 初学者,目前正在创建游戏,并且正在努力寻找一种方法来创建通用的 mousedown/mousemove 事件处理程序来移动在运行时创建的图片框class 鼠标构造函数
我已经找到了如何移动它们的方法,但现在它只在我单击表单而不是图片框本身时有效,这远非理想。有没有一种方法可以创建一个通用事件处理程序,该处理程序能够确定单击了哪个 pictureBox 并仅移动那个?我将如何去做呢?如果有帮助,我已将图片框添加到 Form1 的控件中以显示它们。代码是 class 构造函数,说明如何在运行时使用以下行创建 pictureBox:
"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>();
}
如果我没理解错,那么你可以使用picturebox的事件。参数发送者是触发事件的控件。
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;
}
我是使用 Visual Studio 2019 的 C# 初学者,目前正在创建游戏,并且正在努力寻找一种方法来创建通用的 mousedown/mousemove 事件处理程序来移动在运行时创建的图片框class 鼠标构造函数
我已经找到了如何移动它们的方法,但现在它只在我单击表单而不是图片框本身时有效,这远非理想。有没有一种方法可以创建一个通用事件处理程序,该处理程序能够确定单击了哪个 pictureBox 并仅移动那个?我将如何去做呢?如果有帮助,我已将图片框添加到 Form1 的控件中以显示它们。代码是 class 构造函数,说明如何在运行时使用以下行创建 pictureBox:
"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>();
}
如果我没理解错,那么你可以使用picturebox的事件。参数发送者是触发事件的控件。
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;
}