Supression de controls WPF ? [Résolu]

Signaler
Messages postés
41
Date d'inscription
mercredi 22 juin 2011
Statut
Membre
Dernière intervention
22 juillet 2012
-
Messages postés
41
Date d'inscription
mercredi 22 juin 2011
Statut
Membre
Dernière intervention
22 juillet 2012
-
Bonjour,

J'ai un souci pour supprimer des "Line"
Explication:

Dans mon "courbe.xaml" je génère un repère orthonormé dessiné avec des "Line"

Pour générer les "Line" dans mon "courbe.xaml.vb"
Voici mon code:

 '/////////////Propriété pour la creation des vecteurs//////////////////////                     
    Private aline As Line
    Private Property Myline(b As Short) As Line
        Get
            Return aline
        End Get
        Set(value As Line)
            aline = value
        End Set
    End Property

'///////////////Declaration et traçage des axes X, Y et le quadrillage///////////////////////////////////
    Private Property axeX As Line
    Private Property axeY As Line
    Private Sub TraceAxeRepere()
'/J'ai besoin de supprimer graphiquement tout les "Line" qui on utiliser la propertty "Myline()"
        Grid1.Children.Remove(axeX)
        Grid1.Children.Remove(axeY)
        axeX = New Line
        axeY = New Line
        axeX.Stroke = System.Windows.Media.Brushes.Black
        axeY.Stroke = System.Windows.Media.Brushes.Black
        axeX.StrokeThickness = 3
        axeY.StrokeThickness = 2
        axeX.X1 = 0
        axeX.Y1 = filtreY(0)
        axeX.X2 = PagePRX
        axeX.Y2 = filtreY(0)
        axeY.X1 = 0
        axeY.Y1 = 0
        axeY.X2 = 0
        axeY.Y2 = PagePRY
        Grid1.Children.Add(axeX)
        Grid1.Children.Add(axeY)

        Dim a As Int16 = 1
        Dim b As Int16 = 1
        Dim x As Int64 = 0
        Dim y As Int64 = 0

        While (a <= nbrAxeX)
            Myline(a) = New Line

            aline.Stroke = System.Windows.Media.Brushes.Gray
            aline.StrokeThickness = 0.1
            aline.X1 = x + filtreX(EchelleMinX + (EchelleMaxX - EchelleMinX) / nbrAxeX)
            aline.X2 = x + filtreX(EchelleMinX + (EchelleMaxX - EchelleMinX) / nbrAxeX)
            x = aline.X1
            aline.Y1 = filtreY(EchelleMinY)
            aline.Y2 = filtreY(EchelleMaxY)
            Grid1.Children.Add(aline)
            a = a + 1
        End While
        x = 0
        a = 1
        While (b <= nbrAxeY)
            Myline(b) = New Line

            aline.Stroke = System.Windows.Media.Brushes.Gray
            aline.StrokeThickness = 0.1
            aline.X1 = filtreX(EchelleMinX)
            aline.X2 = filtreX(EchelleMaxX)
            aline.Y1 = filtreY(y + EchelleMinY + (EchelleMaxY - EchelleMinY) / nbrAxeY)
            aline.Y2 = filtreY(y + EchelleMinY + (EchelleMaxY - EchelleMinY) / nbrAxeY)
            y = y + EchelleMinY + (EchelleMaxY - EchelleMinY) / nbrAxeY
            Grid1.Children.Add(aline)
            b = b + 1
        End While
        y = 0
        b = 1

    End Sub


Ma raison est simple des boutons génère les échelles, les plages, et les axes. les axes sont calculé par rapport a ces différent élément.

Problème quand une seconde courbe et créée, des axes son rajouté au dessus de ce qui existe déjà.

J'espère avoir était asse clair dans mon explication n'étant pas un littéraire.


Info: les courbes on une partie importante dans mon logiciel car il affiche les consommation de puissance énergétique d'un magasin.
Automate --> OPC --> Logiciel PC

2 réponses


J'ai besoin de supprimer graphiquement tout les "Line" qui on utiliser la propertty "Myline()"

Pourquoi ne pas utiliser une List(Of Line)
dim meslignes as new list(of line)

Dans ta property MyLine, tu les ajoutes :
meslignes.add(aline)

Au moment de les supprimer tu n'auras plus qu'à énumérer la liste :
for each ligne as line in meslignes
   Grid1.Children.remove(ligne)
next
'on vide meslignes pendant qu'on y est
meslignes.clear
Messages postés
41
Date d'inscription
mercredi 22 juin 2011
Statut
Membre
Dernière intervention
22 juillet 2012

Merci, ta réponses a résolu mon problèmes.

Sa marche très bien.