所以我有一个像这样生成的矩形数组:
int nRec = 3;
double sizeRec = 30.0;
Rectangle[,] recArray = new Rectangle[nRec, nRec];
for (int i = 0; i < nRec; i++)
{
for (int j = 0; j < nRec; j++)
{
recArray[i, j] = new Rectangle()
{
Width = sizeRec,
Height = sizeRec,
Fill = Brushes.Red,
Stroke = Brushes.DarkRed,
StrokeThickness = 1,
};
// Add to a canvas for example
recArray[i, j].MouseLeftButtonDown += (sender2, e2) => ClickEvent(sender2, e2, i, j);
front_canvas.Children.Add(recArray[i, j]);
Canvas.SetTop(recArray[i, j], sizeRec + sizeRec * i);
Canvas.SetLeft(recArray[i, j], sizeRec + sizeRec * j);
}
}
它们填充在名为&#34; front_canvas&#34;:
的画布上 <Canvas HorizontalAlignment="Left" Height="305" Margin="0,0,-0.333,-13" VerticalAlignment="Top" Width="509" Name="front_canvas"/>
我希望在MouseLeftButtonDown上更改矩形的属性。例如,我想将Fill属性更改为绿色。正如我上面的代码所示,我认为我可以通过以下方式实现这一目标:
private void ClickEvent(object sender, EventArgs e, int i, int j)
{
//Code to change Change rectangle properties:
}
理想情况下,我希望避免使用XAML,并感谢社区提供的任何指导。
答案 0 :(得分:0)
你可以试试这个
private void ClickEvent(object sender, EventArgs e)
{
Rect rect = (Rectangle)sender;
rect.Fill = Brushes.Green;
}
PS:避免在循环中捕获局部变量。将捕获变量本身而不是值。