Uitypeeditor hacking, propertygrid et listview configurables, très simple

Description

Vous rêvez d'utiliser une PropertyGrid ou un ListView configurable, très simplement dans votre application. Voici deux contrôles utilisant les UITypeEditor du Framework (là c'est la galère), sans les inconvénients. Pas de machin compliqué, pas de 'il faut dériver du, et implémenter le et puis et ça'...

L'utilisation est niveau débutant.
La modification niveau 'avancer'

Source / Exemple :


void MainFormLoad(object sender, EventArgs e)
{
  // Properties
  prop.SetProperty("String", "Hello World, this is an example\r\nof a string");
  prop.SetProperty("My Color", Color.Black);
  prop.SetProperty("My Font", Font);
  prop.SetProperty("My boolean", true);
  prop.SetProperty("My Date of birth", DateTime.Today);
  prop.SetProperty("A list", "One", new string[] { "One", "Two", "Three", "Four", "Five" } , false);
  prop.SetProperty("A read only list", "Monday", new string[] { "Monday", "Tuesday", "Wenesday" }, true);
  prop.SetProperty("Label", "Hello World", true);
  prop.SetProperty("File", "", new EditListViewEventHandler(propery_custom));

}

// la modification de la cellule se fait sur les évènements qui interviennent pour chaque cellule
//   RequestBackColor
//   RequestColor
//   RequestFont

void GridRequestBackColor(object sender, GG.Windows.Forms.EditListColorEventArgs e)
{
  // odd rows
  if ( e.Row % 2 == 0 ) // là on va dessiner le fond des cellules de ligne paires en LightYellow
    e.Color = Color.LightYellow;
  // column number 3
  if ( e.Col == 3 ) // là on dessine le fond en LightSteelBlue si c'est la colonne 3... facile hein :-)
  e.Color = Color.LightSteelBlue;
}
// Evènement sur une propriété Custom
void propery_custom(object sender, EditListEventArgs e) {
  // custom property- here open file dialog box
  OpenFileDialog fd = new OpenFileDialog();
  if ( fd.ShowDialog() == DialogResult.OK && System.IO.File.Exists(fd.FileName) )
    e.Value = fd.FileName;
}

void MainFormFormClosing(object sender, FormClosingEventArgs e)
{
  Trace.Line( prop.GetProperty(0) ); // récupération de la propriété
  Trace.Line( prop.GetProperty(1) );
}

Conclusion :


Et voilà

L'application fournie avec les contrôles sert d'exemple.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.