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 :

Choisir couleur dans ColorDialog


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 40
    Points
    40
    Par défaut Choisir couleur dans ColorDialog
    Bonjour,

    J'ai un problème dans mon petit logiciel pour récupérer la couleur choisie dans une ColorDialog et appliquer cette couleur à mon ellipse.

    J'ai une erreur sur le DialogResult.OK.

    Pouvez-vous m'aider svp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private void MenuPaletteCouleur_Click(object sender, RoutedEventArgs e)
            {   
                BrushConverter conv = new BrushConverter();
                ColorDialog MyDialog = new ColorDialog();
                SolidColorBrush couleurPalette = conv.ConvertFrom(MyDialog.Color) as SolidColorBrush;
                MyDialog.AllowFullOpen = false;
                if (MyDialog.ShowDialog() == DialogResult.OK)
                    ellipse1.Fill = couleurPalette;
            }

  2. #2
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Bonjour,

    Avant d'affecter la couleurPalette, il faut d'abord appeler le ShowDialog() et ensuite si le resultat est OK, récupérer la couleur choisie.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 40
    Points
    40
    Par défaut
    Merci pour ta réponse, mais je ne vois pas ce que tu veut dire.

    Peux-tu me mettre le code?

  4. #4
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Je veux simplement dire que déjà, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SolidColorBrush couleurPalette = conv.ConvertFrom(MyDialog.Color) as SolidColorBrush;
    devrait se trouver à l'intérieur du if().

    Sinon, quel est le message d'erreur que vous obtenez avec votre code ?

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 40
    Points
    40
    Par défaut
    Voilà, j'ai intégré la ligne dans le if.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void MenuPaletteCouleur_Click(object sender, RoutedEventArgs e)
            {   
                BrushConverter conv = new BrushConverter();
                ColorDialog MyDialog = new ColorDialog();
                MyDialog.AllowFullOpen = false;
                if (MyDialog.ShowDialog() == DialogResult.OK)
                {
                    SolidColorBrush couleurPalette = conv.ConvertFrom(MyDialog.Color) as SolidColorBrush;
                    ellipse1.Fill = couleurPalette;
                }
            }
    Voici le message d'erreur que j'ai :


    Erreur*2*'System.Nullable<bool>'*ne*contient*pas*une*définition*pour*'OK'*et*aucune*méthode*d'extension*'OK'*acceptant*un*premier*argument*de*type*'System.Nullable<bool>'*n'a*été*trouvée*(une*directive*using*ou*une*référence*d'assembly*est-elle*manquante*?)

  6. #6
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    OK vous êtes en WPF, j'avais pas fait attention.
    Le ShowDialog en WPF renvoit un bool? et non un DialogResult, comme c'est le cas en WinForm.

    Vous devez test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(MyDialog.DialogResult() == true) {...}

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 40
    Points
    40
    Par défaut
    Cela ne fonctionne pas, il ne trouve pas de méthode DialogResult dans la classe ColorDialog.

    Une autre idée?

  8. #8
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    C'est normal, je me suis un peu emmèlé dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(MyDialog.ShowDialog() == true) {...}
    Ca devrait déjà aller un peu mieux

  9. #9
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 40
    Points
    40
    Par défaut
    Il y a encore une erreur :


    Erreur 1 L'opérateur '==' ne peut pas être appliqué aux opérandes de type 'System.Windows.Forms.DialogResult' et 'bool'

  10. #10
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Qu'avez-vous dans les using au début de votre code ?

    Essayez comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(MyDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {...}

    Il y a un DialogResult de type bool? dans votre classe, qui hérite de Window, et l'enum DialogResult de System.Windows.Forms => il faut préciser le chemin complet pour éviter le conflit.

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 40
    Points
    40
    Par défaut
    Ce coup ci c'est bon ! Merci beaucoup! Par contre maintenant mon programme plante juste après avoir cliqué sur le bouton OK. Il doit y avoir quelque chose qui n'est pas correct dans mon code : Dans la conversion?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void MenuPaletteCouleur_Click(object sender, RoutedEventArgs e)
            {   
                BrushConverter conv = new BrushConverter();
                ColorDialog MyDialog = new ColorDialog();
                MyDialog.AllowFullOpen = false;
                if (MyDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    SolidColorBrush couleurPalette = conv.ConvertFrom(MyDialog.Color) as SolidColorBrush;
                    ellipse1.Fill = couleurPalette;
                    rectangle1.Fill = couleurPalette;
                }
            }

  12. #12
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Essayez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SolidColorBrush couleurPalette = new SolidColorBrush(MyDialog.Color);

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 40
    Points
    40
    Par défaut
    Non, j'ai cette erreur :


    Erreur 1 La méthode surchargée correspondant le mieux à 'System.Windows.Media.SolidColorBrush.SolidColorBrush(System.Windows.Media.Color)' possède des arguments non valides

  14. #14
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    Ben oui... Encore du mélange WPF - WinForm :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SolidColorBrush couleurPalette = new SolidColorBrush(Color.FromArgb(MyDialog.Color.A, MyDialog.Color.R, MyDialog.Color.G, MyDialog.Color.B));
    En fait, il faut convertir un System.Drawing.Color en System.Windows.Media.Color

  15. #15
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 108
    Points : 40
    Points
    40
    Par défaut
    Super, un grand merci à toi d'avoir pris un peu de temps pour me faire comprendre mes erreurs !

  16. #16
    SLE
    SLE est déconnecté
    Membre éclairé Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Points : 799
    Points
    799
    Par défaut
    A votre service !
    ...et désolé de m'être un peu embrouillé au début entre le wpf et le winform, mais bon, c'est fin de journée aussi

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

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. Sauvegarder une couleur dans un champ Alphanum
    Par Harry dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/07/2004, 11h21
  3. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03
  4. Modifier la taille, la couleur ... dans un label
    Par Guigui_ dans le forum GTK+ avec Python
    Réponses: 3
    Dernier message: 15/07/2004, 17h09
  5. Ecrire du texte en couleurs dans un composant
    Par wutang dans le forum Composants
    Réponses: 11
    Dernier message: 12/07/2004, 10h55

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