5/5 (2 avis)
Vue 25 929 fois - Téléchargée 3 738 fois
//Voici certaines fonctions utilisées pour controlé la validité de l'adresse //ainsi que la fonction et variable pour récupérer et assigné la valeur. /// <summary> /// Variable permettant de définir ou de récupérer l'adresse /// IP du composant au format String /// </summary> public String stringIP { set { try { String[] txtIp = value.Split(new char[1]{'.'}); textBox1.Text = txtIp[0]; textBox2.Text = txtIp[1]; textBox3.Text = txtIp[2]; textBox4.Text = txtIp[3]; } catch { throw new Exception(string.Format("La valeur donnée n'est pas valide.")); } } get { return getIPInString(); } } /// <summary> /// Cette fonction teste si il la valeur du texBox sender /// est correcte. /// Si oui, on laisse changer de controle. /// Sinon, on reste sur ce controle et on selectionne le texte. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void IPTextBoxLeave(object sender, System.EventArgs e) { if(((TextBox)sender).Text == "") return; if(!IsNumeric(((TextBox)sender).Text)) { ((TextBox)sender).Focus(); ((TextBox)sender).SelectAll(); return; } else { int value = Convert.ToInt32(((TextBox)sender).Text); if((value<0) || (value>255)) { ((TextBox)sender).Focus(); ((TextBox)sender).Select(0,((TextBox)sender).Text.Length); return; } } } /// <summary> /// Fonction appelée à l'appuis d'une touche clavier. /// Elle teste la validitée de cette dernière avant de l'inscrire. /// Si elle est correcte, on laisse la touche s'exécuter. /// Sinon, on l'inhibe. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void textBoxKeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { // Si la caractère tapé est numérique if (char.IsNumber(e.KeyChar)) { if (e.KeyChar == '²') e.Handled = true; // Si c'est un '²', on gère l'evenement. else e.Handled = false; // Sinon, on laisse passer le caractère (On peut omettre cette ligne) } // Si le caractère tapé est un caractère de "controle" (Enter, backspace, ...), on laisse passer else if (char.IsControl(e.KeyChar)) { if(e.KeyChar == Convert.ToChar(8)&& ((TextBox)sender).Text.Length ==0 ) { //si touche suppr et textbox vide,on passe au précédent this.SelectNextControl((TextBox)sender,false,false,false,true); } e.Handled = false; } // Si on appuit sur '.', on passe à l'autre nombre de l'IP (sauf dernier nombre et le port ) else if (e.KeyChar == '.' && !((TextBox)sender).Equals(textBox5) && !((TextBox)sender).Equals(textBox4)) { //on ne passe au suivant que sur le textBox n'est pas vide if(((TextBox)sender).Text.Length > 0 ) this.SelectNextControl((TextBox)sender,true,false,false,true); e.Handled = true; } // si on demande le numéro du port avec la touche : else if(e.KeyChar == ':' && ((TextBox)sender).Equals(textBox4)) { this.SelectNextControl((TextBox)sender,true,false,false,true); e.Handled = true; } // Et sinon, on gère toutes les autres touches tapées, et on en fait rien else e.Handled = true; } /// <summary> /// Fonction appelée lorsque la valeur du textBox sender est modifiée. /// Elle est donc appelé généralement après un textBoxKeyPress. /// Elle ne teste que la longueur du texte, supposant sa valeur correcte. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void IPTextBoxTextChanged(object sender, System.EventArgs e) { // si le textBox n'est pas vide et est un nombre if(((TextBox)sender).Text.Length != 0 && IsNumeric(((TextBox)sender).Text)) { //on supprime les zéros inutiles en début de nombre String txt = ((TextBox)sender).Text; ((TextBox)sender).Text = Convert.ToInt32(txt).ToString(); txt = ((TextBox)sender).Text; //on se place à la fin de la saisie ((TextBox)sender).Select(txt.Length,0); //si on a 3 chiffres, on passe au controle suivant if(((TextBox)sender).Text.Length == 3) this.SelectNextControl((TextBox)sender,true,false,false,true); if(((TextBox)sender).Text.Length > 3) ((TextBox)sender).Text = ((TextBox)sender).Text.Remove(5,((TextBox)sender).Text.Length-3); } else { ((TextBox)sender).Focus(); ((TextBox)sender).Select(0,((TextBox)sender).Text.Length); } } /// <summary> /// Fonction permettant de connaitre l'IP au format String /// </summary> /// <returns>IP entrée au format String</returns> public string getIPInString() { if(textBox1.Text.Length !=0 && textBox2.Text.Length !=0 && textBox3.Text.Length !=0 && textBox4.Text.Length !=0) { return textBox1.Text + "." + textBox2.Text + "." + textBox3.Text + "." + textBox4.Text; } else throw new Exception(string.Format("Au moins une des valeurs de l'IP est vide.")); }
27 avril 2006 à 22:21
26 avril 2006 à 22:57
sinon, il y a toujours le masked textbox (beaucoup moins beau visuellement que ton contrôle :) qui peut ± faire la job.
ton code est bien commenté
bravo
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.