begin process at 2010 02 09 18:02:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CONTROLE TEXTBOX POUR LA SAISIE D'ADRESSE IP.

CONTROLE TEXTBOX POUR LA SAISIE D'ADRESSE IP.


 Information sur la source

Note :
6,75 / 10 - par 4 personnes
6,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Source .NET ( DotNet ) Classé sous :adresse, ip, valide, textbox, controle Niveau :Débutant Date de création :26/04/2006 Date de mise à jour :27/04/2006 10:22:55 Vu / téléchargé :16 735 / 3 327

Auteur : fcolo

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Dans un projet je suis emmené à demander à l'utilisateur d'entrer une adresse IP et un port.
A chaque fois, je faisais toujours la même manipulation pour la partie graphique et la validation de l'adresse.
Je me suis dis qu'il serait peut être plus intelligent de créer mon propre composant que j'utiliserai lorsque j'en aurais besoin.

Ce controle permet de présenter à l'utilisateur une zone de saisie d'adresse IP et un port.
La validité des valeurs est contrôlée durant la frappe et après la frappe.
L'adresse IP entrée peut être récupérée au format String, byte[] ou IPAddress.
On peut, en utilisant ces même formats, remplir la partie adresse IP.

La saisie de l'adresse IP est aider avec des déplacement du focus automatique.

Source

  • //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."));
  • }
//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.")); 
}

 Conclusion

Ce qu'il reste a faire:
- supprimer les bugs que vous trouverez :)
- redessiner les éléments du controle lorsqu'on redimentionne ce dernier (dans le rezize du controle)

Mise à jour:
- dès qu'un bug sera signalé ou que j'aurai rencontré
- tant que je programmerai

J'ai réalisé ce controle à partir de recherche sur le forum, je vous remercie donc.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

26 avril 2006 17:05:53 :
Il y a des erreurs avec le disigner à cause du controle d'exception que j'ai mis lorsqu'on place le composant sur une form. Le designer essait de lire la valeur de l'Ip (alors qu'elle est vide) et celà génère une exeption. Pour le moment, je n'ai enlevé que le controle d'exception du source pour que vous puissiez tester.
27 avril 2006 10:22:55 :
J'ai enlever la gestion du port pour etre plus générique. J'ai laissé dans les description du designer que le formatage en String de l'IP. J'ai remis les exceptions lors de la saisie ou la récupération d'une adresse invalide. Pour celà, il a falu que je mette une IP par defaut (0.0.0.0), je n'ai pas encore bien réfléchie à ce problème.

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) SAUVEGARDER DES DONNÉES SENSIBLES DANS LE FICHIER DE CONFIGU...

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) NOTIFICATIONS DANS UN DELEGATE ASYNCHRONE par olivieram2
Source avec Zip Source avec une capture Source .NET (Dotnet) PIXEL SHADER - CRÉATION, UTILISATION, ET BINDING par yoannd
Source avec Zip Source avec une capture Source .NET (Dotnet) UITYPEEDITOR HACKING, PROPERTYGRID ET LISTVIEW CONFIGURABLES... par gourky
Source avec Zip Source .NET (Dotnet) CONVERTION D'UNE IMAGE EN G-CODE, GRAVURE CNC par gourky
Source avec Zip Source .NET (Dotnet) CAROUSEL EN WPF (USERCONTROL) par CoolSpirit

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) SAVOIR L'ADRESSE PHYSIQUE (MAC) DES CARTES RÉSEAUX DE L'ORDI... par boutemine
Source avec Zip Source .NET (Dotnet) TEXTBOX SÉQUENCE DE TOUCHES. par vbmaniac8
Source avec une capture Source .NET (Dotnet) MODIFIER LA CONFIGURATION DU RÉSEAU LOCAL par thithi242
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN C# OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCISANT... par ShareVB
Source avec Zip Source .NET (Dotnet) IPBOX : SAISIE D'ADRESSE IP par Crazyht

Commentaires et avis

Commentaire de badrbadr le 26/04/2006 22:57:53

c'est drôle, j'aurais parier qu'un côntrole existe déjà dans la toolbox .net :) mmm, c'était peut-être en MFC
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

Commentaire de coq le 27/04/2006 22:21:53 administrateur CS

Eh bah visiblement c'était du .Net 2.0, donc tu vas pouvoir l'utiliser l'attribut DisplayName :p

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Controle IP... [ par Miltiades ] J'aimerai savoir s'il le controle "Adresse IP" qui avait été implémenté en MFC existe en C#(ce controle sert à afficher une adresse IP en séparant les [C#] saisie d'adresse ip dans une textbox [ par karshnod ] Bonjour, je suis confronté a un petit probleme : J'ai une TextBox, et je souhaiterais que l'on puisse saisir seulement l'adresse ip et rien d'autre (p Adresse IP Valide? [ par Gefkuz ] Bonjour,Je voulai savoir s'il existai une class permettant de verifier si une ip contenu dans une string etait valide. en renvoyant un bool ou un int? Tester l'adresse IP [ par bshebert ] J'utilise un pc sur 2 réseaux distincts (réseau A et réseau B) avec, donc, 2 adresses IP distincts. Par ex: Lorsque je suis sur le réseau A je souhait Adresse IP [ par fdouieb ] Bonjour, Je ne suis pas a mon aise en ce qui concerne les Adresse IP et le ports qui vont avec. Cependant, je sais qu'avec l'instruction "TcpListener Modifier l'adresse IP [ par sebfr74 ] Bonjour,Je suis en train d'&#233;crire une application sous VS2005 pour windows CE 5.0 en C# avec le compact framework 2.J'ai supprim&#233; le shell s Récupérer l'adresse IP [ par thebigboss ] Bonjour,je voudrais savoir comment faire pour r&#233;cup&#233;rer son adresse IP et celle d'un message post&#233; sur un port.Je m'explique, je suis a Suppression adresse MAC [ par blg2 ] Environnement :- je d&#233;veloppe en VISUAL C++ 6.0 sur PC .- une des t&#226;ches du logiciel consiste &#224; communiquer avec d'autres PC en utilisa Afficher son adresse IP [ par piep14 ] Bonsoir, je souhaite afficher l'adresse IP de l'ordinateur où est lancé l'application. Merci C# Lister les adresse IP d'un port. [ par Wolf007 ] Bonjour &#224; tous.Je d&#233;bute en programmation r&#233;seau et je cheche &#224; savoir comment on peut r&#233;cup&#233;rer toutes les adresse ip c


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales