Удалить прямоугольник/элемент в wpf

Я рисую КВАДРАТ и другие фигуры в WPF. Как это,

 private Rect DrawSquare(Rect bounds, InkCanvas canvas)
    {
        Rectangle recta = new Rectangle();
        recta.Stroke = Brushes.Black;
        //recta.Fill = Brushes.Blue;
        recta.StrokeThickness = 4;
        recta.Width = bounds.Width;
        recta.Height = bounds.Height;
        InkCanvas.SetLeft(recta, bounds.Left);
        InkCanvas.SetRight(recta, bounds.Right);
        InkCanvas.SetTop(recta, bounds.Top);
        canvas.Children.Add(recta);
        return bounds;
    }

и я могу удалить случайные строки с этим

private void myInkCanvas_SelectionChanging(object sender, InkCanvasSelectionChangingEventArgs e)
        {
            else if (toolbarMode == ToolbarMode.Delete)
            {
                myInkCanvas.Strokes.Erase(e.GetSelectedStrokes().GetBounds()); //can delete random lines
                ReadOnlyCollection<UIElement> elements = e.GetSelectedElements();
                foreach (UIElement element in elements)
                {
                    /*String ShapeName = ((System.Windows.Media.Visual)(element)).ToString();
                    if (ShapeName.Contains("Rectangle"))
                    {
                        Rectangle recta = (Rectangle)element;
                        recta.Fill = Brushes.Blue;
                    }*/
                    myInkCanvas.Children.Remove(element); //cant delete shapes!!?
                }
            }
    }

Я могу удалять случайные линии, но не могу удалять фигуры

как я могу?


person Tayfun Yaşar    schedule 07.08.2012    source источник


Ответы (1)


Вы используете цикл foreach для коллекции элементов и одновременно меняете коллекцию. Это невозможно.

Вы можете решить эту проблему, используя цикл for (будьте осторожны, длина цикла может измениться из-за удаления элементов)

person Emond Erno    schedule 07.08.2012
comment
Я хочу удалить выбранные случайные линии (myInkCanvas.Strokes.Erase(e.GetSelectedStrokes().GetBounds());) и определенные формы (эллипс, прямоугольник) myInkCanvas.Children.Remove..?? - person Tayfun Yaşar; 07.08.2012
comment
Я действительно не понимаю, что вы пытаетесь сделать и почему это не работает. Вы можете удалить фигуры с холста, используя Удалить. - person Emond Erno; 07.08.2012