Comment créer une fonction admettant pour paramètre un "control" afin de modifie

Résolu
eustatika Messages postés 16 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 30 août 2011 - 15 juin 2010 à 12:07
eustatika Messages postés 16 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 30 août 2011 - 15 juin 2010 à 12:44
Bonjour,
je début en C# WPF et je souhaite créer une fonction de type :

public static void SetControlBackground(BitmapSource bitmapsource, ref Object control)
{
BitmapImage newsource;

newsource = (BitmapImage)bitmapsource;

System.Windows.Media.ImageBrush brush = new ImageBrush();
brush.ImageSource = newsource;


control.Background = brush;

}

La propriété "Background" étant commune à tous les objets dérivant de "control", je pensait pouvoir l'utiliser ainsi :

SetControlBackground(MonBitmapSource, MonControlGrid)

Or je reçois le message suivant :
Argument 2 : impossible de convertir de 'System.Windows.Controls.Grid' en 'ref object'

Quelqu'un aurait-il une solution?

Merci par avance et bonne journée.

2 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 48
15 juin 2010 à 12:19
Salut

Tout d'abord, regarde l'arbre hiérarchique de la classe System.Windows.Controls.Grid (MSDN est ton ami) :

System.Object
  System.Windows.Threading.DispatcherObject
    System.Windows.DependencyObject
      System.Windows.Media.Visual
        System.Windows.UIElement
          System.Windows.FrameworkElement
            System.Windows.Controls.Panel
              System.Windows.Controls.Grid

Ensuite, tu recherches quelles classes ont la propriété Background.
Tu verras qu'il n'y a que System.Windows.Controls.Panel et System.Windows.Controls.Grid à avoir cette propriété.
Dans les deux cas, il s'agit de classes. Donc elles sont transmises par référence. Ne met donc pas en plus le mot clé ref.

Donc ta méthode doit ressembler à ceci :
public static void SetControlBackground(BitmapSource bitmapsource, Panel control)
{
    BitmapImage newsource;
    newsource = (BitmapImage)bitmapsource;
    System.Windows.Media.ImageBrush brush = new ImageBrush();
    brush.ImageSource = newsource;
    control.Background = brush; 
}


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
3
eustatika Messages postés 16 Date d'inscription lundi 20 octobre 2008 Statut Membre Dernière intervention 30 août 2011
15 juin 2010 à 12:44
Merci beaucoup.
Quelle rapidité.
J'avoue avoir encor du mal avec ces nouvelles classe et ce nouveau language (VB.net et winform auparavant).

Bonne journée
0