Как я могу обновить / перерисовать холст Microsoft Powerpacks в C#?

У меня есть метод, который находит отношения между двумя объектами, если он существует, я хотел бы нарисовать две линии формы для ссылки. Я начал реализовывать первую форму линии, однако всякий раз, когда я тестирую код, строки сохраняются. Я пробовал несколько методов (как вы можете видеть), и они не обновляют холст для новых линий, которые будут нарисованы.

private void DrawRelationshipLines()
            {
                _canvas = new ShapeContainer {Parent = panelCredentialsVisualisation};
                //These methods below do not redraw the canvas
                _canvas.Shapes.Remove(_tableinfoLine);
                _canvas.Shapes.Clear();
                _canvas.Refresh();
                _canvas.Update();
                //

                List<string> relationships = lvSelectedTableInfoCredentialsIntersection.GetAllRelationships();

                if (relationships.Capacity == 0)
                    return;

                foreach (string context in relationships)
                {
                    Label contextLabelName = GetLabelByName(context);
                    _tableinfoLine = new LineShape
                    {
                        Parent = _canvas,
                        BorderWidth = 2,
                        BorderColor = Color.BlueViolet,
                        StartPoint = new Point(lblselectedTableinfo.Right, lblselectedTableinfo.Top + 10),
                        EndPoint = new Point(contextLabelName.Left, contextLabelName.Top + 10)
                    };
    }

Код прекрасно работает при поиске отношений и их отрисовке, однако я хотел бы иметь возможность очистить холст перед рисованием других отношений, возможно ли это?

Спасибо, если кто-нибудь может помочь.

1 ответ

Решение

Перемещение _canvas = new ShapeContainer {Parent = panelCredentialsVisualisation}; вне метода сделал эту работу. Похоже, инициализация нового ShapeContainer каждый раз вызывала проблемы.

Другие вопросы по тегам