簡體   English   中英

如何將事件添加到通過單擊按鈕動態創建的PictureBox中? (C#)

[英]How can I add events to a PictureBox dynamically created by clicking button? (C#)

我通過單擊表單中的按鈕來動態創建一堆PictureBox,但是我不清楚如何向每個事件添加事件。 這是我的主意

private void insertarBloqueToolStripMenuItem_Click(object sender, EventArgs e)
{
    pbA = new PictureBox{
        Name = "picturebox" + contB,
        Image = new Bitmap(bloque),
        Size = pbA.Image.Size,
    };
    pbA.MouseDown += new MouseEventHandler(pbA_MouseDown);
    pbA.MouseUp += new MouseEventHandler(pbA_MouseUp);
    pbA.MouseMove += new MouseEventHandler(pbA_MouseMove);
    pbA.Paint += new PaintEventHandler(pbA_Paint);
    pbA.Cursor = Cursors.Hand;
    listaBloques.Add(pbA);
    panel1.Controls.Add(pbA);
}

那就是我得到的,您能幫我實現這個想法嗎? 以及如何創建一種方法來在列表中移動一個PictureBox? 謝謝

你的想法很好! 但這足以寫(但您的作品也可以):

pbA.Paint += pbA_Paint;// generally: ... += methodName;

並且您必須自行創建事件。 例如:

void pbA_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
    //do some cool stuff!
}

如果將其繪制在任何 PictureBox上,則將調用此方法。 如果您想知道畫了哪個PictureBox,則只需編寫:

void pbA_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
    PictureBox picBox_active = sender as PictureBox;
    //do some cool stuff!
}

對於只移動一個PictureBox的一種方法,您可以將所需對象作為參數:

void move(PictureBox picBox, int moveX, int moveY)
{
    picBox.Location = new Point(moveX, moveY);
}

您可以通過以下方式調用此方法:

PictureBox picBoxTest = new PictureBox();
move(picBoxTest, 5, 5);

並通過一個示例使其更清楚:

void pbA_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
    PictureBox picBox_active = sender as PictureBox;
    move(picBox_active, 5, 5);
}

已繪制的PictureBox將移動到坐標5,5。

暫無
暫無

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

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