在C#/WPF中更改鼠标事件的矩形属性
我有一个矩形数组,如下所示:在C#/WPF中更改鼠标事件的矩形属性,c#,wpf,C#,Wpf,我有一个矩形数组,如下所示: 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++) {
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);
}
}
理想情况下,我希望避免使用XAML,并感谢社区提供的任何指导。您可以尝试一下
private void ClickEvent(object sender, EventArgs e)
{
Rect rect = (Rectangle)sender;
rect.Fill = Brushes.Green;
}
PS:避免在循环中捕获局部变量。将捕获变量本身,而不是值。好的,谢谢。您的解决方案与:
Rectangle=(Rectangle)sender一起工作代码>
private void ClickEvent(object sender, EventArgs e, int i, int j)
{
//Code to change Change rectangle properties:
}
private void ClickEvent(object sender, EventArgs e)
{
Rect rect = (Rectangle)sender;
rect.Fill = Brushes.Green;
}