Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#/WPF中更改鼠标事件的矩形属性_C#_Wpf - Fatal编程技术网

在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;
   }