Interdire la saisie de certains type de données dans un champ Text

Résolu
cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 - 20 juil. 2012 à 08:59
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 24 juil. 2012 à 14:07
En effet dans mon Application, il est question de noter des élèves, aussi je souhaiterais interdire des nombres négatifs et des nombres supérieurs à 20. voici ce que j'ai fait:
if (cboMatricule.Text != null ||
txtCodePersonnel.Text != " " ||
cboClasse.Text != null ||
cboMatiere.Text != null ||
cboTypeEvaluation.Text != null ||
cboTrimestres.Text != null ||
txtCoefficiente.Text != "" ||
txtNoteObtenue.Text != "" ||
txtAnnee.Text != "0000-0000")
{
//Declaration d'une boite de dialogue "YesNo"
//Si l'utilisateur confirme l'Enregistrement on exécute la requette
if (MessageBox.Show("Êtes-vous sûr de vouloir Ajouter" + "\n" +
"un nouvel enregistrement?", "Enregistrement...", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
string chaine1, chaine2, chaine3;
chaine1 = txtNoteObtenue.Text;
chaine2 = "20";
chaine3 = "0";
int i = chaine1.CompareTo(chaine2);
int j = chaine1.CompareTo(chaine3);
Boolean egal = chaine1.Equals(chaine2);
Boolean meme = chaine1.Equals(chaine3);

if (i 0 || i -1)
{
//if (j 0 || j 1)
//{

try
{

// Connexion à la base de test
OleDbConnection Conex = new OleDbConnection(strConex);
Conex.Open();

OleDbCommand Comd = new OleDbCommand("INSERT INTO Notation([code_eleve], [code_personnel], [classe], [matiere], [type_evaluation], [note_obtenue], [date_evaluation], [trimestre], [annee], [coefficient]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Conex);
Comd.Parameters.Add(new OleDbParameter("code_eleve", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtCodeEleve.Text));
Comd.Parameters.Add(new OleDbParameter("code_personnel", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtCodePersonnel.Text));
Comd.Parameters.Add(new OleDbParameter("classe", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, cboClasse.Text));
Comd.Parameters.Add(new OleDbParameter("matiere", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, cboMatiere.Text));
Comd.Parameters.Add(new OleDbParameter("type_evaluation", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, cboTypeEvaluation.Text));
Comd.Parameters.Add(new OleDbParameter("note_obtenue", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtNoteObtenue.Text));
Comd.Parameters.Add(new OleDbParameter("date_evaluation", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtDateNote.Text));
Comd.Parameters.Add(new OleDbParameter("trimestre", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, cboTrimestres.Text));
Comd.Parameters.Add(new OleDbParameter("annee", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtAnnee.Text));
Comd.Parameters.Add(new OleDbParameter("coefficient", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, txtCoefficiente.Text));

Comd.ExecuteNonQuery();
Conex.Close();

// Active les autres boutons
this.btnAjouter.Enabled = true;
this.btnAjouter.Text = "&Annuler";
this.btnPrecedent.Enabled = false;
this.btnSuivant.Enabled = false;
this.btnModifier.Enabled = false;
this.btnSupprimer.Enabled = false;

// Affiche le premier elève inscrit
this.cboMatricule.Text = null;
this.txtNomEleve.Text = "";
this.txtPrenomEleve.Text = "";
this.txtCodeEleve.Text = "";
this.txtSexe.Text = "";
this.txtClasse.Text = "";
this.txtIDEleve.Text = "";
this.txtNoteObtenue.Text = "";
this.cboMatricule.Text = "Selection";
this.cboMatricule.SelectAll();
this.cboMatricule.Focus();
}
catch //(FileNotFoundException ex) //(Exception ex)
{
//MessageBox.Show(ex.Message, "Erreur");
MessageBox.Show("Veuillez renseigner tous les Champs", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.txtCodePersonnel.Focus();
}
//}
}
MessageBox.Show("La note ne peut-être supérieure à 20",this.Text,MessageBoxButtons.OK,MessageBoxIcon.Information);
this.txtNoteObtenue.Text = " ";
this.txtNoteObtenue.SelectAll();
this.txtNoteObtenue.Focus();
}

Il se trouve que ça marche pour ce qui concerne les nombres supérieurs à 20, mais pour les nombres négatifs ça ne marche pas. Si quelqu'un pourrait orienter mes recherches pour que je m'en sorte. Merci d'avance.
A voir également:

4 réponses

cs_BinKentsu Messages postés 64 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 22 juillet 2014 8
20 juil. 2012 à 09:11
Bonjour,

Au lieu d'utiliser la fonction CompareTo, tu pourrais faire un test de la valeur entrée comme suit :

if (Float.TryParse(txtNoteObtenue.Text))
{
   float temp = Float.Parse(txtNoteObtenue.Text);
   if (temp > 20)||(temp < 0)
      MessageBox.Show("La note entrée n'est pas correcte.");
   else
   {
      // Ton code
   }
}
else
  MessageBox.Show("Vous n'avez pas entré un nombre.");

BinKentsu
3
cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 1
23 juil. 2012 à 08:56
Merci pour ta précieuse aide avec ce bout de code; j'ai du le retoucher un tout petit peu.
Dans la zone de déclaration
private float temp;

if(float.TryParse(this.txtNoteObtenue.Text,out temp))
temp=float.Parse(this.txtNoteObtenue.Text);
if ((temp > 20) || (temp < 0))
{
MessageBox.Show("La note doit être \ncomprise entre 20 et 0", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
Ton Code
}
{

Merci encore à vous BinKentsu
3
cs_warzet Messages postés 99 Date d'inscription jeudi 17 janvier 2008 Statut Membre Dernière intervention 25 juillet 2013 1
20 juil. 2012 à 10:04
Merci pour le tuyau je vais l'essayer et vous donner la suite.
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
24 juil. 2012 à 14:07
Salut,

Inutile de rappeler la méthode float.Parse derrière.

La méthode float.TryParse(strin text, out float val) renvoie true si la conversion a été possible, false sinon. Mais si elle a été possible, la valeur a automatiquement été enregistrée dans val (d'où le mot-clé out).

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
Rejoignez-nous