C# 更改发件人对象的属性而不知道其名称
我正在尝试更改网格中PictureBox的背景色。PictureBox是一个数组的一部分,该数组具有一个带字符的事件处理程序。我很难根据单击的图片盒来更改不同的图片盒 这就是我到目前为止所做的: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+
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对象