Catégories

Recommander

Meuuh

 

Développement

Vendredi 30 décembre 2005 5 30 /12 /2005 22:38
Parfois il est nécessaire d'écrire une collection fortement typée;
A la place de prendre un objet arraylist ( dans lequel on peut mettre n'importe quoi et don risquer de se tromper et ou en plus il va faloir caster a chaque fois dans l'objet souhaité), on va écrire notre propre collection d'objets, n'acceptant que ce type d'objet !.


Voici un exemple de collection n'acceptant que des objets "string"
Il faut utiliser l'espace de noms "System.Collections"
On écrit une classe qui va dériver de "System.Collections.CollectionBase" :
public class StringList : System.Collections.CollectionBase
{


      #region constructors
      public StringList():base()
      {

       }
      #endregion

       #region properties and indexors

    
       // cet indexeur ne prendra que des objets string
        public string this[int index]
        {
              get
              {
                   // il faut convertir ce qu'on a dans notre liste en string
                    return Convert.ToString(this.List[index]);
               }
                set
                {
                       this.List[index]=value;
                }
        }
         #endregion

        #region public methods
               /// <summary>
               /// ajoute un objet string a la liste
               /// </summary>
               /// <param name="text"></param>
               public void Add(string text)
               {
                       this.List.Add(text);
               }


               /// <summary>
               /// insere un objet string a la liste
               /// </summary>
               /// <param name="index">endroit de la liste ou il sera inséré</param>
               /// <param name="text">objet string à insérer</param>
               public void Insert(int index, string text)
               {
                       this.List.Insert(index,text);
               }


               /// <summary>
               /// Supprime l'élément à l'index
               /// </summary>
               /// <param name="index">index de l'élément à supprimer</param>
               public void RemoveAtIndex(int index)
               {
                       this.List.RemoveAt(index);
               }

               public void Remove(string text)
               {
                       this.List.Remove(text);
               }
               #endregion

}


Pour l'utiliser :

StringList Sl = new StringList();         // instanciation
Sl.Add("UN STRING");                        // ajout d'un élément à la colection
string st = Sl[0];                                // st va prendre la valeur du premier objet de
                                                           //la collection


pour un autre objet, remplacer string par cet autre objet.

si l'objet en question a des proprietes, on peut faire une méthode
Add, qui prendra ces proprietes en parametre, et qui creera l'objet
avant de l'ajouter.
Par sam - Publié dans : Développement
Ecrire un commentaire - Voir les commentaires - Recommander
Vendredi 30 décembre 2005 5 30 /12 /2005 23:04
  • Pour utiliser excel en .NET.

    Il vous faudra utiliser les Pia's (Primay interop assemblies) office (disponibles en téléchargement gatuit sur le site de Microsoft).

  • Pour connaitre le nombre de ligens utilisées dans un fichier Excel.

    Utiliser la propriété 'XLsheet.UsedRange.Rows.Count;'

(XlSheet est un objet Microsoft.Office.Interop.Excel.Worksheet)

  • Pour insérer une image dans un fichier Excel.

    Utiliser la méthode "XLsheet.Shapes.AddPicture";
Exemple :

public void InsertPicture(string path, System.Drawing.Point
PicturePosition, System.Drawing.Size PictureSize)
{
      try
      {
          XLsheet.Shapes.AddPicture(path,                                                // chemin
          Microsoft.Office.Core.MsoTriState.msoFalse,                                // faut il lier
                                                                                            //l'image au fichier source
          Microsoft.Office.Core.MsoTriState.msoTrue,                         // faut il enregistrer
                                                                                        //l'image avec le fichier excel
          PicturePosition.X, PicturePosition.Y,                         // position x et y de l'image
          PictureSize.Width, PictureSize.Height );                     // taille de l'image,largeur,                                                                                                                 //hauteur
         }
         catch(System.Runtime.InteropServices.COMException ex)
         {
              Console.WriteLine("Error insert image : "+ex.Message);
         }
          catch(Exception ex)
         {
                Console.WriteLine("Error insert image : "+ex.Message);
         }
}


  • Autres

à venir plus tard...
Par sam - Publié dans : Développement
Ecrire un commentaire - Voir les commentaires - Recommander
Samedi 31 décembre 2005 6 31 /12 /2005 12:53
Quelques conversions utiles :

Pour les conversions de types basiques, utiliser l'objet "Convert" :
    - Convert.ToInt32(obj);
    - Convert.ToString(Obj);
    - ...

Pour convertir un string en tableau de bytes (string --> byte[] ) :

byte[] buffer = System.Text.Encoding.ASCII.GetBytes("MA CHAINE");

Pour convertir un tableau de bytes en string (byte[] --> string) :
string szBytes = System.Text.Encoding.ASCII.GetString(byte[]);

Pour convertir une image en tableau de bytes :

public static Byte[] Image2ByteArray(Image img)
{
            try
            {
                MemoryStream mstImage  = new MemoryStream();
                img.Save(mstImage, System.Drawing.Imaging.ImageFormat.Jpeg);
                Byte[] bytImage = mstImage.GetBuffer();
                return bytImage;
            }
            catch(Exception ex)
            {
                Console.WriteLine("Erreur image To byte array "+ex.Message);
                return null;
            }
}

Pour convertir un tableau de bytes en image :

public static Image ByteArray2Image(Byte[] BArray)
{
            try
            {
                MemoryStream mstImage = new MemoryStream(BArray);
                Image img = Image.FromStream(mstImage);
                return img;
            }
            catch(Exception ex)
            {
                Console.WriteLine("Erreur Byte array To image "+ex.Message);
                return null;
            }
 }

Par sam - Publié dans : Développement
Ecrire un commentaire - Voir les commentaires - Recommander
Samedi 31 décembre 2005 6 31 /12 /2005 12:58
Pour les impressions simples (sans reporting ou automation Word) en C#, je vous conseille de lire cet article.


Pour l'alignement dans une impression ce bout de code devrait vous aider :
switch(_header.HorizontalAlign)
{
        case HorizontalAlignment.Center:                            // explications ci-dessous
        {
                 float center = ev.PageBounds.Width/2;
                 StringFormat sf = new StringFormat();
                sf.Alignment = StringAlignment.Center;                                                                                       ev.Graphics.DrawString(PageNumber,_header.textfont, myBrush,center, yHeader, sf);
         }break;
        
         case HorizontalAlignment.Right:
          {
                  float right = ev.MarginBounds.Right;
                  StringFormat sf = new StringFormat();
                  sf.Alignment = StringAlignment.Far;
                   ev.Graphics.DrawString(PageNumber,_header.textfont, myBrush,
right, yHeader,sf);
            }break;
            
            default :
             {
                  ev.Graphics.DrawString(PageNumber,_header.textfont, myBrush,
leftMargin, yHeader, new StringFormat());
              }break;
}

Pour le centrer :
float center = ev.PageBounds.Width/2;
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
(on calcule le centre de la page, puis on alligne "centre" dessus)
Par sam - Publié dans : Développement
Ecrire un commentaire - Voir les commentaires - Recommander
Samedi 31 décembre 2005 6 31 /12 /2005 13:06

Pour changer le nom du thread courant :
Thread.CurrentThread.Name = "MainThread";
Ici on donne le nom "MainThread" au thread courrant.

Si c'est pour le thread principal: mettre ca dans le main avant le "Application.Run" .

! utiliser l'espace de noms "System.threading" !
Par sam - Publié dans : Développement
Ecrire un commentaire - Voir les commentaires - Recommander

Calendrier

Janvier 2010
L M M J V S D
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
             
<< < > >>

Musique

W3C

  • Flux RSS des articles
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus