none
Utilisation des combobox... RRS feed

  • Question

  • Je recommence un nouveau sujet pour cette question, afin d'éviter d'avoir un post trop long.

    Je suis toujours sur le développement d'un programme qui calcul les paires de coordonnées des quatre angles d'une fenêtre.

    Premier post

    Merci à
    Radric pour son aide et ses conseils.

    La partie du programme qui calcul les paires de coordonnées selon des dimension personnalisée, fonctionne à merveille.

    Par contre, je bute sur la partie qui calcul selon un format défini (A4, A3, etc...)

    Voici ce que j'aimerais :

    J'ai deux combobox, une pour le choix du format et une pour le choix de l'orientation de la feuille (portrait, paysage). J'ai uniquement renseigné l'attribut "Collection" de ces deux combobox en y introduisant la liste des formats et orientations. Déjà là, y a-t-il un paramètre à renseigner pour que tout fonctionne bien???

    J'ai également, deux textbox pour introduire les coordonnées du centre de mon format.

    Je vais tout simplifier pour expliquer mes besoins. Je pars du principe que je calcul une fenêtre A4 en portrait.

    J'aimerai savoir comment faire pour que le programme s'informe de l'orientation de ma feuille et qu'en fonction de ça il assigne la bonne valeur au variable "Largeur" et "Hauteur".

    Orientation = Portrait;
    Format = A4 => Largeur = 210, Hauteur = 300

    Orientation = Paysage;
    Format = A4 => Largeur = 300, Hauteur = 210

    etc....

    J'ai déjà codé une méthode de calcul par quadrant mathématique, qui fonctionne bien avec la première partie de mon programme. En voici une :

    Code Snippet

    private Coordonnees CalculCoordQuad1(Coordonnees centre, decimal Largeur, decimal Hauteur)

    {
         Coordonnees Coord;

    Coord.Y = centre.Y - (Largeur / 2);


         Coord.X = centre.X + (Hauteur / 2);

    return Coord;

    }


    Le but étant de les réutiliser telquelles.

    Merci d'avance pour votre aide.

    mercredi 25 juin 2008 11:50

Réponses

  • Bonjour Jérôme,

     

    Je vous ai écris quelques lignes de codes pour vous montrer ce qu'il est possible de faire en c# en essayant d'utiliser quelques notions qui vous aideront pour la suite de votre projet.

     

    Par exemple nous pouvons créer une classe Feuille et deux énumérations (Format et Orientation) de la manière suivante :

    Nous allons par la même occasion "overrider" la méthode ToString() pour que nous puissions afficher nos objets dans une combobox

     

    Code Snippet

    public enum Orientation

    {

    Portrait = 1,

    Paysage

    }

    public enum Format

    {

    A3 = 1,

    A4

    }

    public class Feuille

    {

    private Format _Format;

    public Format Format

    {

    get { return _Format; }

    set { _Format = value; }

    }

    private int _Largeur;

    public int Largeur

    {

    get { return _Largeur; }

    set { _Largeur = value; }

    }

    private int _Hauteur;

    public int Hauteur

    {

    get { return _Hauteur; }

    set { _Hauteur = value; }

    }

    private Orientation _Orientation;

    public Orientation Orientation

    {

    get { return _Orientation; }

    set { _Orientation = value; }

    }

     

    //Nous "overridons" la méthode ToString pour l'affichage de nos objets

    //de type feuille dans la combobox

    public override string ToString()

    {

    return Format + " " + Orientation;

    }

    }

     

     

    Maintenant, nous allons lier une liste d'objets de type Feuille à notre combobox.

    Pour commencer, nous allons créer notre collection de Feuille :

     

    Code Snippet

    List<Feuille> Feuilles = new List<Feuille>();

     

    Feuille f1 = new Feuille();

    f1.Orientation = Orientation.Paysage;

    f1.Format = Format.A4;

    f1.Largeur = 300;

    f1.Hauteur = 210;

     

    Feuilles.Add(f1);

     

    Feuille f2 = new Feuille();

    f2.Orientation = Orientation.Portrait;

    f2.Format = Format.A4;

    f2.Largeur = 210;

    f2.Hauteur = 300;

     

    Feuilles.Add(f2);

     

     

    Noté que nous aurions pu utiliser le constructeur de feuille pour initialiser nos objets

     

    Nous allons parcourir notre collection de feuille et remplir notre combobox :

     

    Code Snippet

    foreach (Feuille f in Feuilles)

    {

    comboBox1.Items.Add(f);

    }

     

     

     

    Si nous observons le contenu de notre combobox nous pouvons remarquer les 2 éléments suivants :

     

    A4 Paysage

    A4 Portrait

     

    Lorsque nous sélectionnons l'un de ces éléments nous voulons afficher la largeur.

     

    Code Snippet

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

    {

    MessageBox.Show(((Feuille)comboBox1.Items[comboBox1.SelectedIndex]).Largeur.ToString());

    }

     

     

    Dans notre exemple nous avons décidé de récupérer la largeur, mais l'ensemble des propriétés de notre objet de type feuille selectionné est disponible. Ainsi vous pouvez passer ces différentes propriétés en argument de vos fonctions.

     

    Bonne continuation,

     

    Amicalement,

     

     

    mercredi 25 juin 2008 13:30
  • Dans le code, soit au constructeur sous la commande InitializeComponent() ou dans l'évènement Form Load.
    vendredi 18 juillet 2008 13:20
    Modérateur

Toutes les réponses

  • Bonjour Jérôme,

     

    Je vous ai écris quelques lignes de codes pour vous montrer ce qu'il est possible de faire en c# en essayant d'utiliser quelques notions qui vous aideront pour la suite de votre projet.

     

    Par exemple nous pouvons créer une classe Feuille et deux énumérations (Format et Orientation) de la manière suivante :

    Nous allons par la même occasion "overrider" la méthode ToString() pour que nous puissions afficher nos objets dans une combobox

     

    Code Snippet

    public enum Orientation

    {

    Portrait = 1,

    Paysage

    }

    public enum Format

    {

    A3 = 1,

    A4

    }

    public class Feuille

    {

    private Format _Format;

    public Format Format

    {

    get { return _Format; }

    set { _Format = value; }

    }

    private int _Largeur;

    public int Largeur

    {

    get { return _Largeur; }

    set { _Largeur = value; }

    }

    private int _Hauteur;

    public int Hauteur

    {

    get { return _Hauteur; }

    set { _Hauteur = value; }

    }

    private Orientation _Orientation;

    public Orientation Orientation

    {

    get { return _Orientation; }

    set { _Orientation = value; }

    }

     

    //Nous "overridons" la méthode ToString pour l'affichage de nos objets

    //de type feuille dans la combobox

    public override string ToString()

    {

    return Format + " " + Orientation;

    }

    }

     

     

    Maintenant, nous allons lier une liste d'objets de type Feuille à notre combobox.

    Pour commencer, nous allons créer notre collection de Feuille :

     

    Code Snippet

    List<Feuille> Feuilles = new List<Feuille>();

     

    Feuille f1 = new Feuille();

    f1.Orientation = Orientation.Paysage;

    f1.Format = Format.A4;

    f1.Largeur = 300;

    f1.Hauteur = 210;

     

    Feuilles.Add(f1);

     

    Feuille f2 = new Feuille();

    f2.Orientation = Orientation.Portrait;

    f2.Format = Format.A4;

    f2.Largeur = 210;

    f2.Hauteur = 300;

     

    Feuilles.Add(f2);

     

     

    Noté que nous aurions pu utiliser le constructeur de feuille pour initialiser nos objets

     

    Nous allons parcourir notre collection de feuille et remplir notre combobox :

     

    Code Snippet

    foreach (Feuille f in Feuilles)

    {

    comboBox1.Items.Add(f);

    }

     

     

     

    Si nous observons le contenu de notre combobox nous pouvons remarquer les 2 éléments suivants :

     

    A4 Paysage

    A4 Portrait

     

    Lorsque nous sélectionnons l'un de ces éléments nous voulons afficher la largeur.

     

    Code Snippet

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

    {

    MessageBox.Show(((Feuille)comboBox1.Items[comboBox1.SelectedIndex]).Largeur.ToString());

    }

     

     

    Dans notre exemple nous avons décidé de récupérer la largeur, mais l'ensemble des propriétés de notre objet de type feuille selectionné est disponible. Ainsi vous pouvez passer ces différentes propriétés en argument de vos fonctions.

     

    Bonne continuation,

     

    Amicalement,

     

     

    mercredi 25 juin 2008 13:30
  • Tout d'abord, désolé de n'est pas venu plutôt pour répondre. Petite pause estivale oblige ^^

    En tous cas merci beaucoup pour vos explications.

    Par contre, je trouve pas où définir

    List<Feuille> Feuilles = new List<Feuille>(); .... etc


    J'avoue que je suis tout débutant que je métrise ni C#, ni visual studio 2005


    D'ailleurs est-il utile de passer à la version 2008???


    D'avance merci ^^



    vendredi 18 juillet 2008 09:17
  •  Jérôme Clerc A écrit:

    Par contre, je trouve pas où définir

    List<Feuille> Feuilles = new List<Feuille>(); .... etc

    Cela devrait être définit au moment de remplir le combobox, soit au chargement du formulaire

     Jérôme Clerc A écrit:

    J'avoue que je suis tout débutant que je métrise ni C#, ni visual studio 2005

    On est tous débutants un jour ou l'autre Wink


    vendredi 18 juillet 2008 12:14
    Modérateur
  • "Cela devrait être définit au moment de remplir le combobox, soit au chargement du formulaire"

    Mais dans le code ou dans les propriétés de l'objet???

    "On est tous débutants un jour ou l'autre"

    Oui, mais c'est pas facile ^^
    vendredi 18 juillet 2008 13:02
  • Dans le code, soit au constructeur sous la commande InitializeComponent() ou dans l'évènement Form Load.
    vendredi 18 juillet 2008 13:20
    Modérateur
  • Voilà, j'y suis enfin arrivé ^^

    Ce fût rude, mais bon... C'est comme ça qu'on apprend Wink

    Merci à vous pour vos précieux conseils
    mercredi 23 juillet 2008 09:52