C#

Macro Revit pour créer un mur

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

Etiquettes:

Petit exemple montrant comment écrire dans Excel en C#

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:

Get the name of the active AutoCAD document with .NET

Here's a little sample code to detect if AutoCAD is running. If it does, it displays the full path of the active drawing.

The code use COM (out of process).

VB.NET

Imports System.Runtime.InteropServices

Module Module1

    Sub Main()
        Try
            Dim acad = Marshal.GetActiveObject("AutoCAD.Application")
            Dim activeDocument = acad.ActiveDocument
            MsgBox("Le chemin complet du document actif est : " & activeDocument.FullName)
        Catch ex As COMException
            Const MK_E_UNAVAILABLE As Integer = &H800401E3
            If ex.ErrorCode = MK_E_UNAVAILABLE Then
                MsgBox("AutoCAD n'est pas en cours d'exécution.")
            Else
                Throw
            End If
        End Try
    End Sub

End Module

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

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

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:

Visual Studio - Protéger une chaine de connexion

L'approche recommandée pour stocker une chaine de connexion à une base de données est d'utiliser le fichier de configuration du programme (app.config). Mais cela entraine un problème au niveau de la sécurité des données. En effet, le mot de passe utilisé pour la connexion à la base se retrouve en clair dans le fichier XML.

Pour pallier à ce problème, il est possible de chiffrer la section connectionStrings en suivant les instructions détaillées sur cet article de MSDN.

Pages

Subscribe to RSS - C#