|
|
|
Exemple de code : Comment créez un contrôle dynamiquement (C#)
Cet exemple de code vous montrera par un exemple, comment créer un contrôle dynamiquement, l'insérer sur un formulaire et s'abonner à ses événements.
Placez le code suivant dans un corps de méthode où vous souhaitez que le contrôle soit créé, par exemple le Form_Load.
Prenons le cas d'un bouton, la première étape consiste à créer l'objet et affecter des valeurs à ses propriétés :
// Création du bouton System.Windows.Forms.Button button = new Button(); button.Text = "Click me!"; button.Location = new Point(25, 25); // Définition de la position du bouton
La seconde étape, s'abonner à un événement. Pour cela, il faut créer la méthode qui sera appelée lors du déclenchement de cet événement :
private void button_Click(object sender, EventArgs e) { MessageBox.Show("button_Click"); }
Ensuite le code pour s'abonner à l'événement :
// Abonnement à l'événement "Click" button.Click += new EventHandler(button_Click);
Enfin, ajouter le contrôle sur le formulaire, rien de plus simple :
// Ajout du contrôle sur le formulaire this.Controls.Add(button);
Petite astuce :
Lorsque vous commencez à écrire : « button.Click += », l'Intelisense vous proposera automatiquement de créer la méthode (ici button_Click) et l'abonnement à cette méthode.
[Source : http://www.blog-microsoft.fr]
Par
Fabien Lavocat
Publié le
17 avril 2008
|
|
|
|
|
Exemple de code : Requêtes paramètrées (C#, SQL)
Dans cet exemple, nous allons voir comment écrire des requêtes paramètrées. Déjà, pourquoi écrire des requêtes paramètrées ? Et bien d'une part pour ne pas se tromper dans l'écriture de la requête, qui n'a jamais oublié des ' dans ses applications ? Ensuite il se pose un problème de sécurité, en effet il peut se produire des failles de SQL Injection.
Par
Fabien Lavocat
Publié le
31 mars 2008
|
|
|
Exemple de code : LINQ To SQL et DataLoadOptions
Cet article a pour but d'expliquer la différence entre le Lazy Loading (chargement progressif / à la demande) et l'Agressive Loading (chargement complet en une fois) des données d'une base, avec LINQ To SQL et les DataLoadOptions.
Par
Julien Corioland
Publié le
29 mars 2008
|
|
|
Controle de la réplication SQL Server via C# 2.0
Dans une première partie, cet article vous fera découvrir / redécouvrir les grands principes de la réplication de base de données sous SQL Server 2005. Dans une deuxième partie, nous verrons comment contrôller cette réplication, directement depuis une application développée en C# 2.0.
Par
Julien Corioland
Publié le
28 mars 2008
|
|
|
Exemple de code : Constructeur de classe (C# 3.5)
Prenons une classe quelconque avec une propriété :
public class MyClass { public String MyProperty { get; set; } }
Nous allons maintenant voir une nouvelle façon de créer une instance de cette classe en définissant une valeur pour la propriété MyProperty.
MyClass variableA = new MyClass() { MyProperty = "Bonjour" }; MyClass variableB = new MyClass(); variableB.MyProperty = "Bonjour";
Vous remarquez le premier appel du constructeur avec l'assignation de la valeur à la propriété MyProperty est entre accolades. Quelle est la différence entre ces deux méthodes ? Voyons ce que nous propose Reflector :
MyClass <>g__initLocal0 = new MyClass(); <>g__initLocal0.MyProperty = "Bonjour"; MyClass variableA = <>g__initLocal0; MyClass variableB = new MyClass(); variableB.MyProperty = "Bonjour";
Avec ce code, nous pouvons comprendre le mécanisme de création de la variable A. La CLR commence par créer une instance de la classe MyClass en temporaire dans la mémoire de l'ordinateur, ensuite elle affecte une valeur à la propriété MyProperty de la variable temporaire puis si aucune erreur n'est déclenchée, la variable variableA reçoit la référence de la variable temporaire. Dans la seconde méthode, on créé simplement une nouvelle instance de la classe MyClass que l'on affecte à notre variable variableB puis on change la valeur de sa propriété MyProperty.
Par
Fabien Lavocat
Publié le
24 mars 2008
|
|
|
Exemple de code : Propriétés automatiques C(#3.5)
En C#2.0, comment fesions-nous pour créer des attributs avec leurs propriétés associées ?
private String _myProperty;
public String MyProperty { get { return this._myProperty; } set { this._myProperty = value; } }
Et voilà ce que le logiciel Reflector traduit à partir du code IL généré à la compilation :
private string _myProperty;
public string MyProperty { get { return this._myProperty; } set { this._myProperty = value; } }
Vous remarquez que ce sont exactement les même lignes. Nous allons maintenant utiliser la simplification d'écriture de C#3.5 :
public String MyProperty { get; set; }
Il n'est désormais plus nécessaire de créer l'attribut privé ainsi que le contenu des méthodes get et set de la propriété. Voilà ce que Reflector nous génére à partir du code IL :
public string MyProperty { [CompilerGenerated] get { return this.k__backingfield; } [CompilerGenerated] set { this.k__BackingField = value; } }
L'attribut [CompilerGenerated] qui est rajouté par le compilateur indique que c'est lui-même (le compilateur) qui as créé le contenu de la méthode. k__backingfield permet à la CLR de récupérer ou modifier la valeur auquel fait référence la propriété étant donné que tout à été généré par le compilateur.
Si vous ne connaissez pas Reflector, je vous conseille de jeter un coup d'oeil sur ce logiciel : http://www.aisto.com/roeder/dotnet/ Autre lien : http://www.blog-microsoft.fr
Par
Fabien Lavocat
Publié le
23 mars 2008
|
|
|
Exemple de code : Convertion Explicite
A la différence de la convertion implicite, la convertion explicite est obligatoire lors qu'il y a un risque de perte de données. On utilise alors le mot clef explicit, ainsi que le type de l'objet cible entre parenthèses. Exemple :
Prennons une classe Euro et une classe Dollar afin de faire des conversions :
public class Euro { public Single Value { get; set; } public static explicit operator Euro(Dollar value) { return new Euro() { Value = value.Value * 0.6476f }; } }
public class Dollar { public Single Value { get; set; } public static explicit operator Dollar(Euro value) { return new Dollar() { Value = value.Value * 1.5435f }; } }
La méthode permettant de faire la convertion explicite doit être marquée static et on utilise les mots clefs explicit et operator :
public static explicit operator Type d'arrivée(Type de départ value) { Traitement de la convertion... }
Voilà comment faire la convertion explicite :
Euro euro = new Euro() { Value = 15 }; Dollar dollar = (Dollar)euro; // Convertion explicite Console.WriteLine(euro.Value.ToString() + "€ = $" + dollar.Value.ToString()); // Affiche : 15€ = $23.1525
Lien MSDN : http://msdn2.microsoft.com/fr-fr/library/xhbhezf4.aspx Autre lien : http://www.blog-microsoft.fr
Par
Fabien Lavocat
Publié le
22 mars 2008
|
|
|
|