C# 更改发件人对象的属性而不知道其名称

C# 更改发件人对象的属性而不知道其名称,c#,.net,winforms,C#,.net,Winforms,我正在尝试更改网格中PictureBox的背景色。PictureBox是一个数组的一部分,该数组具有一个带字符的事件处理程序。我很难根据单击的图片盒来更改不同的图片盒 这就是我到目前为止所做的: private PictureBox[,]GameGrid=new PictureBox[20,20] public frmGame() { int x = 10; int y = 10; for (int i = 0; i < 20; i+

我正在尝试更改网格中PictureBox的背景色。PictureBox是一个数组的一部分,该数组具有一个带字符的事件处理程序。我很难根据单击的图片盒来更改不同的图片盒

这就是我到目前为止所做的:

private PictureBox[,]GameGrid=new PictureBox[20,20]

public frmGame() { int x = 10; int y = 10; for (int i = 0; i < 20; i++) { for (int j = 0; j < 20; j++) { GameGrid[i, j] = new System.Windows.Forms.PictureBox(); setUpPicBox(x, y, i, j); x += 11; } y += 11; x = 10; } InitializeComponent(); } public void setUpPicBox(int x, int y, int i, int j) { this.GameGrid[i, j].Location = new System.Drawing.Point(x, y); this.GameGrid[i, j].Size = new System.Drawing.Size(10, 10); this.GameGrid[i, j].BackColor = Color.Black; this.GameGrid[i, j].Name = "btnGrid" + i + "-" + j; this.GameGrid[i, j].Visible = true; this.GameGrid[i, j].CreateGraphics(); this.GameGrid[i, j].Click += new System.EventHandler(this.picturebox_Click); this.Controls.Add(GameGrid[i, j]); } private void picturebox_Click(object sender, EventArgs e) { }</code>
公共frmGame() { int x=10; int y=10; 对于(int i=0;i<20;i++) { 对于(int j=0;j<20;j++) { GameGrid[i,j]=新系统.Windows.Forms.PictureBox(); 设置picbox(x,y,i,j); x+=11; } y+=11; x=10; } 初始化组件(); } 公共无效设置Picbox(整数x、整数y、整数i、整数j) { this.GameGrid[i,j].Location=newsystem.Drawing.Point(x,y); this.GameGrid[i,j].Size=newsystem.Drawing.Size(10,10); this.GameGrid[i,j].BackColor=Color.Black; this.GameGrid[i,j].Name=“btnGrid”+i+“-”+j; this.GameGrid[i,j].Visible=true; this.GameGrid[i,j].CreateGraphics(); this.GameGrid[i,j].Click+=newsystem.EventHandler(this.picturebox\u Click); this.Controls.Add(GameGrid[i,j]); } 私有无效picturebox\u单击(对象发送方,事件参数e) { }
任何帮助都将不胜感激

事件处理程序的
发送方
参数就是引发事件的实例。这里是用户单击的PictureBox实例。如果要更改其背景色,只需将sender对象强制转换为正确的类型并设置新颜色

private void picturebox_Click(object sender, EventArgs e)
{
    var pictureBox = sender as PictureBox;
    if (pictureBox != null) {
        pictureBox.BackColor = Color.Blue;
    }
}

事件处理程序的
sender
参数是引发事件的实例。这里是用户单击的PictureBox实例。如果要更改其背景色,只需将sender对象强制转换为正确的类型并设置新颜色

private void picturebox_Click(object sender, EventArgs e)
{
    var pictureBox = sender as PictureBox;
    if (pictureBox != null) {
        pictureBox.BackColor = Color.Blue;
    }
}

在事件处理程序上,sender包含引发事件处理程序的对象。因此,通过将其强制转换为正确的类型,我们可以访问以下示例中的所有属性:

private void picturebox_Click(object sender, EventArgs e)
{
     PictureBox pic = (PictureBox)sender;
     MessageBox.Show(pic.Name);
}

注意:代码未测试,无法访问VS以在事件处理程序上测试,发送方包含导致事件处理程序触发的对象。因此,通过将其强制转换为正确的类型,我们可以访问以下示例中的所有属性:

private void picturebox_Click(object sender, EventArgs e)
{
     PictureBox pic = (PictureBox)sender;
     MessageBox.Show(pic.Name);
}

注意:代码未经测试,无法访问VS进行测试

您遇到了什么困难?错误消息;单击图片框时没有发生任何事情?只是需要更多的信息来帮助。干杯。我可以让一个普通的活动发生。因此,无论单击哪个picturebox,我都可以让同样的事情发生。但我想做的是,如果点击PictureBox 10,它就会改变颜色。我试着使用:
BackColor=Color.White
但是这改变了BackColor的形式。你有什么困难?错误消息;单击图片框时没有发生任何事情?只是需要更多的信息来帮助。干杯。我可以让一个普通的活动发生。因此,无论单击哪个picturebox,我都可以让同样的事情发生。但我想做的是,如果点击PictureBox 10,它就会改变颜色。我试着使用:
BackColor=Color.White
,但这改变了BackColor的形式。谢谢,这很有效。我试图使用sender,但不知道如何正确使用,谢谢你的帮助。谢谢,这很有效。我试图使用sender,但不知道如何正确使用,谢谢你的帮助。谢谢你的帮助,我一直错误地使用sender对象谢谢你的帮助,我一直错误地使用sender对象