簡體   English   中英

C# - 使用鼠標移動在運行時創建的圖片框的通用事件處理程序

[英]C# - Generic event handler to move pictureboxes created at runtime with mouse

我是使用 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>();
    }

如果我理解正確,那么您可以使用圖片框的事件。 參數發送者是控件,它觸發事件。

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM