IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Attribuer une couleur à un objet depuis une class


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2021
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Attribuer une couleur à un objet depuis une class
    Bonsoir,

    J'ai créé une class dans laquelle j'ai une méthode qui permet de faire un ping d'une adresse IP. J'aimerai avec une condition, que lorsque le ping est bon, l'ellipse créé dans le MainWindow prenne une couleur et lorsque le ping est KO une autre couleur.

    Je précise l'adresse IP est dans une TextBox dans le MainWindow (Box_Adresse_IP)

    Voici ma Classe "Alerte"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    class Alerte
    {
     
    public SolidColorBrush Warnning
            {
                get => Warnning;
                set => Warnning = value;
            }
     
    public string Adresse_IP
            {
                get => Adresse_IP;
                set => Adresse_IP= value;
            }
     
    public void Methode_Alerte_IP()
            {
                try
                {
                    Ping ping = new Ping();
                    PingReply reply = ping.Send(Adresse_IP, 1000);
     
                    if (reply.Status == IPStatus.Success)
                    {
     
                        Warnning = Brushes.GreenYellow;
                    }
                    else
                    {
                        Warnning = Brushes.Red;
                    }
                }
                catch
                {
                    MessageBox.Show("Impossible de pinger l'IP.", "Erreur ping", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
    }
    Dans mon MainWindow, j'appelle mon ellipse "Alerte_Ping" et j'instancie ma class.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Alerte alerte = new Alerte();
    alerte.Adresse_IP = Box_Adresse_IP.Text;
    alerte.Methode_Alerte_IP();
    Alerte_Ping.Fill = alerte.Warnning;
    Au lancement j'ai rien l'ellipse ne prend aucune couleur. Je suppose que je procède pas de la bonne façon, mais je bloque complet.

    Merci d'avance pour vos réponses.

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Bonjour,

    Le problème est que tu as deux boucles infinies dans ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            public SolidColorBrush Warnning
            {
                get => Warnning;
                set => Warnning = value;
            }
     
            public string Adresse_IP
            {
                get => Adresse_IP;
                set => Adresse_IP= value;
            }
    Ces 2 propriétés s'auto-réfèrent, bloquant complètement ton programme en fait. Donc soit tu déclares 2 autres variables privées, que tes 2 propriétés feront référence, soit tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            public SolidColorBrush Warnning
            {
                get;set;
            }
     
            public string Adresse_IP
            {
                get;set;
            }
    De cette manière, tu utilises directement la propriété, à la différence de ton code, qui provoque une boucle infinie.

    Voilà, sinon ça devrait marcher nickel.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2021
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Déclaration des variables privées
    Bonjour,

    Merci pour ta réponse qui fonctionne parfaitement. Maintenant j'essaye de comprendre mon erreur, il fallait plutôt faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    private string _Warnning;
    private string _Adresse_IP
     
    public SolidColorBrush Warnning
            {
                get => _Warnning;
                set => _Warnning = value;
            }
     
            public string Adresse_IP
            {
                get => _Adresse_IP;
                set => _Adresse_IP= value;
            }
    ?

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 898
    Points : 1 915
    Points
    1 915
    Par défaut
    Si tu ne fais rien de particulier avec tes champs privés tu peux condenser ton code en utilisant les propriétés automatiques, comme te le suggère PixelJuice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public SolidColorBrush Warning { get; set; }

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2021
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Oui c'est ce que j'ai fait au final. Tout marche parfaitement.
    Merci l'équipe pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CKEditor] Attribuer une class ou Id à un élément
    Par snike dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 28/01/2013, 09h57
  2. Réponses: 2
    Dernier message: 13/04/2010, 08h43
  3. [Smarty] Attribuer une class en fonction d'un résultat avec une variable
    Par kitten13 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 25/09/2008, 20h03
  4. attribuer une classe ccs via javascript
    Par julien.63 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/04/2008, 16h18
  5. Attribuer une classe à un élément lors d'un clic
    Par Perceval dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 18/10/2005, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo