Amélioration de code

Résolu
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007 - 16 janv. 2007 à 12:14
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007 - 16 janv. 2007 à 12:55
Bonjour,

J'ai un problème que j'ai essayé de vous résumer simplement. Je dispose d'une classe avec quelques propriétés ("Property"), nous appellerons cette classe "test" :
Public Class test

    Private _layer1 As Point

    Public Property layer1() As Point

        Get

            Return _layer1

        End Get

        Set(ByVal value As Point)

            _layer1 = value

        End Set

    End Property

    Private _layer2 As Point

    Public Property layer2() As Point

        Get

            Return _layer2

        End Get

        Set(ByVal value As Point)

            _layer2 = value

        End Set

    End Property

End Class

---

Ensuite on dispose d'une Form toute bête, "Form1" avec une Listview, qu'on appelle "list" et deux NumericUpDown, appellés "nudX" et "nudY"

Voici le code de la Form1 :
Public Class Form1

    Dim test As New test

    Private Sub nud_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nudX.ValueChanged, nudY.ValueChanged

        Dim thePoint As Point

        Select Case CType(sender, NumericUpDown).Name

            Case nudX.Name

                Select Case list.SelectedItems(0).Index

                    Case 0

                        thePoint = New Point(nudX.Value, test.layer1.Y)

                    Case 1

                        thePoint = New Point(nudX.Value, test.layer2.Y)

                End Select

            Case nudY.Name

                Select Case list.SelectedItems(0).Index

                    Case 0

                        thePoint = New Point(test.layer1.X, nudY.Value)

                    Case 1

                        thePoint = New Point(test.layer2.X, nudY.Value)

                End Select

        End Select

    End Sub

End Class

Le problème c'est que mon "vrai code" comporte une dizaine d'éléments dans la Listview et 4 NumericUpDown ce qui donne beaucoup beaucoup de lignes de code. Je pense qu'on doit pouvoir se débrouiller en ne faisant qu'un "Select Case" avec le sender et ensuite pouvoir faire une sorte de CType sur les propriétés.

Si vous voulez des précisions et que vous n'avez pas compris mon problème n'hésitez pas !

Merci

2 réponses

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
16 janv. 2007 à 12:37
Ben pourquoi la propriété n'est pas un array ? :

Public Class test
    Private _layer As Point()

    Public ReadOnly Property layer() As Point()

        Get

            Return _layer1

        End Get

    End Property

Sub New (ArraySize as Integer)
Redim _layer(ArraySize)
End Sub
End Class

Public Class Form1
    Dim test As New Test(89) 'Le nombre d'éléments
    Private Sub nud_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nudX.ValueChanged, nudY.ValueChanged
        Dim thePoint As Point
        Select Case CType(sender, NumericUpDown).Name           
Case nudX.Name
thePoint = New Point(nudX.Value, test.layer(list.SelectedItems(0).Index).Y)
          Case nudY.Name
thePoint = New Point(test.layer(list.SelectedItems(0).Index).X, nudY.Value)
        End Select
    End Sub
End Class

<hr size="2" width="100%" />Julien.
3
Pym Corp Messages postés 166 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 18 novembre 2007
16 janv. 2007 à 12:55
Merci !

Je ne savais pas du tout que c'était faisable de faire ça :)

Je vais faire pitié quand je vais rendre mes projets Open Source...

@+
0
Rejoignez-nous