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

Signaler
Messages postés
16
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
30 août 2011
-
Messages postés
16
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
30 août 2011
-
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

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
41
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é. -
Messages postés
16
Date d'inscription
lundi 20 octobre 2008
Statut
Membre
Dernière intervention
30 août 2011

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