Switch

Signaler
Messages postés
21
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
-
Messages postés
30
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
22 juin 2010
-
Bonjour toutlemonde

Pouvez-vous m'aider a faire une fonction?
Il s'agit d'un combobox avec trois champs ex: rouge
vert
bleu

si je choisi "rouge"
ma variable int X = 1;

si "vert"
ma variable int X = 2;

si "bleu"
ma variable int X = 3;

Je sais que avec un switch il y a moyen de le faire,pouvez-vous me donner une idée comment le faire?

Je vous remercie d'avance.

4 réponses

Messages postés
12
Date d'inscription
dimanche 24 février 2008
Statut
Membre
Dernière intervention
20 juin 2010
1
Bonjour,

Je t'ai fait un petit programme qui illustre comment faire de 2 façons :
Première avec de if, else if, else
Deuxième avec switch(String).

Je te laisse le code designeur et de la form 1 pour que tu puisse recréer le programme et explorer.

Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ComboBoxCouleur
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private int m_X;

        private void btnValeurXIf_Click(object sender, EventArgs e)
        {
            if (cmbChoixCouleur.Text != "")
            {
                if (cmbChoixCouleur.Text == "Rouge")
                    m_X = 1;
                else if (cmbChoixCouleur.Text == "Vert")
                    m_X = 2;
                else
                    //C'est automatiquement bleau puisqu'Il y 3 couleur et que j'ai éliminer le texte vide.
                    //Si tu avais plus de couleur, tu continurais avec les else if.
                    m_X = 3;
                txtValeurX.Text = m_X.ToString();
            }
        }

        private void btnValeurXSwitch_Click(object sender, EventArgs e)
        {
            if (cmbChoixCouleur.Text != "")
            {
                switch (cmbChoixCouleur.Text)
                {
                    case "Rouge":
                        m_X = 1;
                        break;
                    case "Vert":
                        m_X = 2;
                        break;
                    case "Bleu":
                        m_X = 3;
                        break;
                    default:
                        break;
                }
                txtValeurX.Text = m_X.ToString();
            }
        }
    }
}


Designeur

namespace ComboBoxCouleur
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// true if managed resources should be disposed; otherwise, false.


        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.cmbChoixCouleur = new System.Windows.Forms.ComboBox();
            this.txtValeurX = new System.Windows.Forms.TextBox();
            this.btnValeurXIf = new System.Windows.Forms.Button();
            this.btnValeurXSwitch = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // cmbChoixCouleur
            // 
            this.cmbChoixCouleur.FormattingEnabled = true;
            this.cmbChoixCouleur.Items.AddRange(new object[] {
            "Rouge",
            "Vert",
            "Bleu"});
            this.cmbChoixCouleur.Location = new System.Drawing.Point(12, 12);
            this.cmbChoixCouleur.Name = "cmbChoixCouleur";
            this.cmbChoixCouleur.Size = new System.Drawing.Size(206, 21);
            this.cmbChoixCouleur.TabIndex = 0;
            // 
            // txtValeurX
            // 
            this.txtValeurX.Location = new System.Drawing.Point(224, 12);
            this.txtValeurX.Name = "txtValeurX";
            this.txtValeurX.Size = new System.Drawing.Size(56, 20);
            this.txtValeurX.TabIndex = 1;
            // 
            // btnValeurXIf
            // 
            this.btnValeurXIf.Location = new System.Drawing.Point(12, 55);
            this.btnValeurXIf.Name = "btnValeurXIf";
            this.btnValeurXIf.Size = new System.Drawing.Size(135, 23);
            this.btnValeurXIf.TabIndex = 2;
            this.btnValeurXIf.Text = "Utiliser IF";
            this.btnValeurXIf.UseVisualStyleBackColor = true;
            this.btnValeurXIf.Click += new System.EventHandler(this.btnValeurXIf_Click);
            // 
            // btnValeurXSwitch
            // 
            this.btnValeurXSwitch.Location = new System.Drawing.Point(153, 55);
            this.btnValeurXSwitch.Name = "btnValeurXSwitch";
            this.btnValeurXSwitch.Size = new System.Drawing.Size(127, 23);
            this.btnValeurXSwitch.TabIndex = 3;
            this.btnValeurXSwitch.Text = "Utiliser Switch(String)";
            this.btnValeurXSwitch.UseVisualStyleBackColor = true;
            this.btnValeurXSwitch.Click += new System.EventHandler(this.btnValeurXSwitch_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(292, 90);
            this.Controls.Add(this.btnValeurXSwitch);
            this.Controls.Add(this.btnValeurXIf);
            this.Controls.Add(this.txtValeurX);
            this.Controls.Add(this.cmbChoixCouleur);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.ComboBox cmbChoixCouleur;
        private System.Windows.Forms.TextBox txtValeurX;
        private System.Windows.Forms.Button btnValeurXIf;
        private System.Windows.Forms.Button btnValeurXSwitch;
    }
}


J'espère que ca te convient

Pierre-Luc
Messages postés
30
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
22 juin 2010
1
Sinon vu que tu utilises une combobox, tu peux paramétrer les propriétés DisplayMember, ValueMember et DataSource de cette dernière.

Tu te crées un dictionnaire <string, int> contenant dans ton cas :

Rouge, 1
Vert, 2
Bleu, 3

Et au niveau de la combobox :

combo.DisplayMember = "Key";
combo.ValueMember = "Value";
combo.DataSource = myDictionary;

Et pour finir, il te suffit de t'abonner à l'événement SelectedValueChanged pour récupérer l'entier associé à la couleur.

Désolé de ne pas avoir fourni tout le code, j'espère que ces informations te seront utiles.
Messages postés
21
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
1
Merci les gars pour vos réponses,ça m'a beaucoup aidé mais j'ai un autre petit problème.J'avez fait un petit programme.C'est un seul form avec 7 textbox ou je tape
les données d'un client et les données d'une voiture et je sauve tout dans txt.
Mais le prof que se soit deux classe "client" et "voiture"
Voila son resume:
Les classes doivent être placées dans des fichiers séparés.
Il faudra instancier des objets de ces classes.
Les objets doivent interagir entre eux


Pouvez vous mes donner une idée comment le faire?
Voila mon code:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Clients
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}





private void Form1_Load(object sender, EventArgs e)
{



}



//------------------------------------------------------------------------------------

private void fermerToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
//---------------------------------------------------------------------------------------
private void enregistrersousToolStripMenuItem_Click(object sender, EventArgs e)
{
using (SaveFileDialog sfd = new SaveFileDialog())
{
if (sfd.ShowDialog() == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(sfd.FileName, true, Encoding.Unicode);

sw.WriteLine(textBox2.Text);
sw.WriteLine(textBox3.Text);
sw.WriteLine(textBox4.Text);
sw.WriteLine(textBox5.Text);
sw.WriteLine(textBox6.Text);
sw.WriteLine(textBox7.Text);
sw.WriteLine(textBox8.Text);
sw.Close();

}
}
MessageBox.Show("La fiche a été crée");
}
//-----------------------------------------------------------------------------
private void bCreateDir_Click(object sender, EventArgs e)
{

System.IO.Directory.CreateDirectory(@"H:\CLIENTS");
MessageBox.Show("Dossier CLIENTS a été creé");
}
//----------------------------------------------------------------------------
private void ouvrirToolStripMenuItem_Click(object sender, EventArgs e)
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
if (ofd.ShowDialog() == DialogResult.OK)
{

StreamReader sr = new StreamReader(ofd.FileName, Encoding.Default);

textBox2.Text = sr.ReadLine();
textBox3.Text = sr.ReadLine();
textBox4.Text = sr.ReadLine();
textBox5.Text= sr.ReadLine();
textBox6.Text = sr.ReadLine();
textBox7.Text= sr.ReadLine();
textBox8.Text = sr.ReadLine();


sr.Close();
}
}
}
//----------------------------------------------------------------------------------
private void photoToolStripMenuItem_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(Image.FromFile(@"H:\CLIENTS\vehicule.jpg"));
pictureBox1.Image = bmp;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
Messages postés
30
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
22 juin 2010
1
Hum, en ce qui me concerne, j'aurais tendance à me servir du Binding.

Imaginons que ta classe personne possède 3 propriétés ( Nom, Prénom, Adresse) et que ta classe personne en possède 4 (Marque, Kilométrage, Places, Prix )

Dans l'événement Load de ta form, je créerais une instance de chacune de mes classes ( 1 personne et 1 voiture ) et je configurerais le binding de mes TextBox.

Ca donnerait quelque chose comme :

private Personne p = null;
private Voiture v = null;

private void Form1_Load(object sender, EventArgs e) 
{
p = new Personne();
v = new Voiture();

prenomTextBox.DataBindings.Add("Text", p, "Prenom");
nomTextBox.DataBindings.Add("Text", p, "Nom");
adresseTextBox.DataBindings.Add("Text", p, "Adresse");

// faire de même avec les propriétés de la voiture
}


Après il ne te reste plus qu'à gérer la sauvegarde de tes objets... tu peux créer une classe qui s'en occupera, avec une méthode Save() qui prend en paramètre un objet de type Personne ou Voiture, ainsi qu'un path ou le sauvegarder.

...

On peut même imaginer que cette classe (que j'appelerais Serializer), puisse te retourner un objet sur base du path d'un fichier, une méthode Load(). (Pour recharger un objet que tu as précédement sauvé sous forme de fichier plat )

Je ne vais pas te donner le détail, mais tout est là.
Bon amusement ;-)