0

2 つのオブジェクト間の関係を見つける方法があります。存在する場合は、リンクに 2 つの Lineshapes を描画したいと思います。最初の線形状の実装を開始しましたが、コードをテストするたびに線が持続します。(ご覧のとおり)複数の方法を試しましたが、これらは新しい線を描画するためにキャンバスを更新しません。

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

コードはリレーションシップを検索して描画する際に問題なく動作しますが、別のリレーションシップを描画する前にキャンバスをクリアしたいのですが、これは可能ですか?

誰かが助けてくれたらありがとう。

4

1 に答える 1

0

移動 _canvas = 新しい ShapeContainer {Parent = panelCredentialsVisualisation}; メソッドの外でこの作業を行いました。毎回新しい ShapeContainer を初期化すると問題が発生しているようです。

于 2015-08-25T13:55:51.823 に答える