C# 如何让Windows为通过编程创建的PictureBox引发鼠标单击事件?
我正在构建一个虚拟棋盘游戏,我需要能够点击棋子来移动它们。该图板在背景中创建为一幅图片,而各部分是位于背景之上的图片框。更具体地说,它们是从PictureBox继承的自定义类游戏。我知道PictureBox有一个Name\u Click方法,单击该方法时会调用它,但我正在以编程方式创建我的作品,如下所示:C# 如何让Windows为通过编程创建的PictureBox引发鼠标单击事件?,c#,winforms,events,C#,Winforms,Events,我正在构建一个虚拟棋盘游戏,我需要能够点击棋子来移动它们。该图板在背景中创建为一幅图片,而各部分是位于背景之上的图片框。更具体地说,它们是从PictureBox继承的自定义类游戏。我知道PictureBox有一个Name\u Click方法,单击该方法时会调用它,但我正在以编程方式创建我的作品,如下所示: public Player(int identity, GameBoard Board) { ID = identity; for (int i
public Player(int identity, GameBoard Board)
{
ID = identity;
for (int i = 0; i < 4; i++)
{
Pieces[i] = new GamePiece(ID, Board.GetPlaceSize(), Board.GetPieceColor(ID), Board);
}
}
公共玩家(int身份,游戏板)
{
ID=身份;
对于(int i=0;i<4;i++)
{
棋子[i]=新游戏棋子(ID,Board.GetPlaceSize(),Board.GetPieceColor(ID),Board);
}
}
因此,我不想硬编码为每个游戏调用的方法,因为这会破坏我在这里的目的
有什么建议吗?我可以包含任何其他有帮助的代码,并且我非常灵活地重新设计代码,如果这能让我以后的生活更轻松的话。提前感谢。(连接到事件处理程序)
(事件处理程序)
(连接到事件处理程序)
(事件处理程序)
可能是:
gamePiece.Click += myEventHandler;
其中,gamePiece
是gamePiece
对象,myEventHandler
是任何形式的事件处理程序。。。代表,兰姆达,随便什么。可能是:
gamePiece.Click += myEventHandler;
其中,gamePiece
是gamePiece
对象,myEventHandler
是任何形式的事件处理程序。。。委托、lambda等等。只需为控件添加事件处理程序:
public Player(int identity, GameBoard Board)
{
ID = identity;
for (int i = 0; i < 4; i++)
{
Pieces[i] = new GamePiece(ID, Board.GetPlaceSize(), Board.GetPieceColor(ID), Board);
Pieces[i].Tag = ID;
Pieces[i].Click += pieces_Click;
}
或使用:
公共玩家(int身份,游戏板)
{
ID=身份;
对于(int i=0;i<4;i++)
{
新的,新的。。。。
件[i]。单击+=(发件人,e)=>
{
//做点什么
};
}
}
只需为控件添加事件处理程序:
public Player(int identity, GameBoard Board)
{
ID = identity;
for (int i = 0; i < 4; i++)
{
Pieces[i] = new GamePiece(ID, Board.GetPlaceSize(), Board.GetPieceColor(ID), Board);
Pieces[i].Tag = ID;
Pieces[i].Click += pieces_Click;
}
或使用:
公共玩家(int身份,游戏板)
{
ID=身份;
对于(int i=0;i<4;i++)
{
新的,新的。。。。
件[i]。单击+=(发件人,e)=>
{
//做点什么
};
}
}
private void pieces_Click(object sender, EventArgs e)
{
int id = (int) ((Pieces))sender.Tag;
DoSomethingForId(id);
}
public Player(int identity, GameBoard Board)
{
ID = identity;
for (int i = 0; i < 4; i++)
{
Pieces[i] = new ....
Pieces[i].Click += (sender, e) =>
{
// Do some thing
};
}
}