C#

Déconstruction et dictionnaires avec C# 7.0

Français

Les dictionnaires sont une structure de données bien pratique dans certaines situations, mais j'ai toujours trouvé qu'ils nuisaient un peu à la lisibilité du code.

Dans l'exemple suivant, dans la boucle on ne sait pas exactement ce que représente la clé et la valeur. Bien évidemment le code ici est très court donc on le comprend assez facilement mais sur du code réel, ça n'est pas toujours évident.

Etiquettes:

Compilation de Repetier-Host 0.84

Français

Le logo Repetier-Host

Pour essayer de comprendre comment fonctionne le pilotage d'une imprimante, je me suis dit que ce serait bien d'examiner le code de Repetier-Host, qui était en Open Source jusqu'à sa version 0.84. Hot-World, la société allemande qui développe le logiciel, a décidé depuis de changer de licence et de ne plus partager son code.

Etiquettes:

Paramètres booléens

Français

En général, il est préférable d'éviter d'écrire une méthode avec des paramètres booléens car ce n'est pas très lisible. Supposons par exemple qu'on écrit une méthode qui recherche des entités, avec un paramètre qui permet d'exclure les cercles de la recherche :

IList<Entity> FindEntities(bool ignoreCircles)
{
  //...
}

Quand on appelle la méthode, ça donne ceci :

Différences entre C# et Java

Français

Le logo Java

Cet année, j'ai décidé de me mettre sérieusement au développement pour tablette puisque je suis de plus en plus sollicité sur le sujet. Pour l'occasion, je me suis remis au Java que j'avais un peu abordé au siècle dernier pour pouvoir développer sur Android. J'en profite donc pour noter les différences avec le C# qui est le langage que j'utilise au quotidien.

Revit - Traductions approximatives

Français

La traduction en Français de Revit laisse à désirer. Par exemple pour les motifs, on a plusieurs options pour l'orientation. En anglais, ces options se nomment :

  1. Orient to view
  2. Keep readable
  3. Align with element

Options pour l'orientation des motifs en Anglais

Et bien en Français ça donne :

Etiquettes:

Extraire tous les textes d'un dessin AutoCAD

Français

En théorie, c'est faisable avec la commande EXTRACTDONNEES mais le problème c'est que les codes de formatages sont inclus dans les chaînes extraites. Voici donc le code d'une petite commande en C#/.NET :

Etiquettes:

Macro Revit pour créer un mur

Français

Un petit exemple commenté de création d'un mur via l'API Revit :

Etiquettes:

Petit exemple montrant comment écrire dans Excel en C#

Français

Le texte écrit dans Excel Voici le code complet d'une application console en C# qui se connecte à une session Excel existante ou qui en crée une nouvelle si Excel n'est pas en cours d'exécution.

Etiquettes:

C#/.NET Stocker un DateTime dans la base de registre

Français

La base de registre Windows ne dispose pas d'un type de donnée adapté aux objets date. On peut évidemment utiliser un type chaîne de caractère, mais on peut aussi utiliser un type entier qui est plus compact. Les objets DateTime peuvent être converti en long (entier 64 bits signé) à l'aide de la méthode ToBinary. La méthode FromBinary réalise la conversion dans le sens inverse. L'entier obtenu peut ensuite être enregistré dans le registre sous la forme d'une valeur QWORD (entier 64 bits).

using Microsoft.Win32;
 
RegistryKey rkcu = Registry.CurrentUser;
RegistryKey rk = rkcu.CreateSubKey(@"Software\Société\Produit");
 
// Ecrit la valeur dans le registre
rk.SetValue("Date", DateTime.Now.ToBinary(), RegistryValueKind.QWord);
 
// Lit la valeur depuis le registre
DateTime d = null;
object oDate = rk.GetValue("Date");
if (oDate != null) d = DateTime.FromBinary((long)oDate);

Etiquettes:

Aligner à droite le texte d'une ListBox

Français

Il faut passer la propriété DrawMode de la ListBox à OwnerDrawFixed et ajouter le code suivant dans l'événement OnDraw :

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    e.DrawBackground();
    e.DrawFocusRectangle();
 
    ListBox lb = sender as ListBox;    
 
    // Calcule les dimensions du texte
    SizeF stringSize = new SizeF();
    stringSize = e.Graphics.MeasureString(lb.Items[e.Index].ToString(), e.Font);
 
    e.Graphics.DrawString(
        lb.Items[e.Index].ToString(), 
        e.Font, 
        new SolidBrush(e.ForeColor), 
        new PointF(e.Bounds.Right - stringSize.Width, e.Bounds.Y)
    );            
}

Si ça peut faire gagner 5 minutes à quelqu'un...

Etiquettes:

Pages

Subscribe to RSS - C#