Problème usercontrol

Résolu
Signaler
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Voici mon problème: j'ai créer un controle utilisateur contenant une
image par défaut (jaune). J'ai un type énuméré des couleurs (rouge,
vert, bleu...) avec un constructeur qui renvoie ou attribue la couleur
à l'image (changement d'image par Imagelist).

Dans la barre des propriétés liée à mon controle, je retrouve une
fonction Couleur avec un combobox où je peux choisir ma couleur. Et en
fonction de ça la couleur change... jusque là tout va bien.

Dans l'initializecomponent on a donc bien la couleur qui s'attribue
(donc à l'execution on la voie)... mais lorsque je quitte l'application
et que je la réouvre, la couleur que j'avais choisis n'y es plus et je
retrouve une valeur par défaut (jaune)... mais lorsqu'on execute on
voit bien la couleur que j'avais choisis... c'est donc du coté création
que celà "bug".

J'attend vos solutions avec impatience

Amicalement TMCUH

3 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Il faudrais peut être "stocker les données", je verrais plutot ça :

public led()
{
InitializeComponent();

m_props = new propriete(this);
}

private propriete m_props;

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
/// <summary>
/// Obtient ou attribut les propriétées de la LED
/// </summary>
public propriete Propriété
{
get
{
return m_props;
}
set
{
m_props = value;
}
}



Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Si tu parles bien de la sauvegarde de la valeur sélectionnée durant le design : il faut voir du côté de DesignerSerializationVisibility.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

un grand merci, je sais pas si c'est celà qu'il me faut mais j'ai
adapté mon code en fonction de, ce qui me donne (ci après), mais
seulement j'ai encore un ptit soucis, je n'arrive pas à faire passé des
valeur de l'une à l'autre (surtout dans le set de la class led que j'ai
un prob



namespace mycomponent

{

/// <summary>

/// Description résumée de UserControl1.

/// </summary>

public class led : System.Windows.Forms.UserControl

{

public System.Windows.Forms.PictureBox pic;

public System.Windows.Forms.ImageList listimage;

private System.ComponentModel.IContainer components;



public led()

{

InitializeComponent();

}



[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

/// <summary>

/// Obtient ou attribut les propriétées de la LED

/// </summary>

public propriete Propriété

{

get

{

return new propriete (this);

}

set

{

new propriete(this).Couleur = value;

}

}



#region Code généré par le Concepteur de composants

/// <summary>

/// Nettoyage des ressources utilisées.

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if( components != null )

components.Dispose();

}

base.Dispose( disposing );

}

/// <summary>

/// Méthode requise pour la prise en charge du concepteur - ne modifiez pas

/// le contenu de cette méthode avec l'éditeur de code.

/// </summary>

private void InitializeComponent()

{

this.components = new System.ComponentModel.Container();


System.Resources.ResourceManager resources = new
System.Resources.ResourceManager(typeof(led));

this.pic = new System.Windows.Forms.PictureBox();

this.listimage = new System.Windows.Forms.ImageList(this.components);

this.SuspendLayout();

//

// pic

//

this.pic.Image
= ((System.Drawing.Image)(resources.GetObject("pic.Image")));

this.pic.Location = new System.Drawing.Point(0, 0);

this.pic.Name = "pic";

this.pic.Size = new System.Drawing.Size(10, 10);

this.pic.TabIndex = 0;

this.pic.TabStop = false;

//

// listimage

//

this.listimage.ImageSize = new System.Drawing.Size(10, 10);


this.listimage.ImageStream =
((System.Windows.Forms.ImageListStreamer)(resources.GetObject("listimage.ImageStream")));

this.listimage.TransparentColor = System.Drawing.Color.Transparent;

//

// led

//

this.Controls.Add(this.pic);

this.Name = "led";

this.Size = new System.Drawing.Size(10, 10);

this.Resize += new System.EventHandler(this.led_Resize);

this.ResumeLayout(false);



}

#endregion



private void led_Resize(object sender, System.EventArgs e)

{

this.Width = 10;

this.Height = 10;

}

}

[TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]

public class propriete

{

// mes variables

public enum couleur {jaune = 0, orange, rouge, vert, bleu}; // contient le type

private Control owner; // contient l'appelant

private couleur ChoixCol; // contient le choix par défaut

/// <summary>

/// Constructeur par défaut

/// </summary>

internal propriete(Control owner)

{

this.owner =
owner;


}

/// <summary>

/// obtient ou attribue la couleur à la led

/// </summary>

public couleur Couleur

{

get // quand on demande la reception

{


return this.ChoixCol
;

}

set // quand on attribue

{

try

{


this.ChoixCol = value; //
attribue la couleur à la propriété


this.ChangeColor (value); //appel
la fonction de changement de couleur

}

catch //uniquement valable en cas d'erreur

{


throw new Exception ("Le type
n'est pas valide. Type valide = Led.Form.couleur.Rouge");

}

}

}

/// <summary>

/// Fonction changant la couleur de la led

/// </summary>

private void ChangeColor(couleur col)

{

led clder = new led ();

int a = (int) col; // prend la référence de la couleur


clder.pic.Image = clder.listimage.Images[a]; // attribue la nouvelle
image

}



}

}




Amicalement TMCUH