Bonjour,

J'ai créé une classe BoutonTr, héritée de Bouton, qui permet de définir la transparence de l'image placée dedans, mais j'ai un petit soucis avec les propriétés dans l'inspecteur d'objet... Il est impossible de vider les propriétés ImageOriginale et Image avec la touche DEL une fois qu'il y a une image dedans (sauf en allant dans le code retirer la ligne).
Où est le problème ?
Merci.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
	#region ButtonTr
	[System.Drawing.ToolboxBitmapAttribute(typeof(System.Windows.Forms.Button))] // Définition de l'icone dans le ToolBox
	public class ButtonTr : Button
	{
		#region Déclarations
		private bool transparent;
		private Image imageoriginale;
		private Image image;
		#endregion
 
		#region Constructeur
		public ButtonTr()
		{
			//
			// TODO: Ajouter ici la logique du constructeur
			//
		}
		#endregion
 
		#region Transparent
		[System.ComponentModel.DefaultValueAttribute(typeof(bool), "False"),
		 System.ComponentModel.CategoryAttribute("Appearance")] // Valeur par défaut et catégorie dans le ToolBox
		public bool Transparent
		{
			get
			{
				return transparent;
			}
			set
			{
				if(value == true)
				{
					if(this.Image != null)
					{
						this.Image = maketransparent(this.image);
					}
				}
				else
				{
					if(this.Image != null)
					{
						this.image = (Image)imageoriginale.Clone();
						base.Image = this.Image;
					}
				}
				this.Invalidate();
				transparent = value;
			}
		}
		#endregion
 
		#region MakeTransparent
		protected Bitmap maketransparent(Image pict)
		{
			Bitmap bmp = (Bitmap)pict;
			bmp.MakeTransparent(bmp.GetPixel(0,bmp.Height-1)); // Couleur transparente = bottom/left
			return bmp;
		}
		#endregion
 
		#region ImageOriginale
		[System.ComponentModel.CategoryAttribute("Appearance")] // Valeur par défaut et catégorie dans le ToolBox
		public Image ImageOriginale
		{
			get
			{
				return this.imageoriginale;
			}
			set
			{
				this.imageoriginale = value;
				if(this.imageoriginale == null)
					this.Image = null;
				else
					this.Image = (Image)this.imageoriginale.Clone();
			}
		}
		#endregion
 
		#region Image
		public new Image Image
		{
			get
			{
				if (this.image == null && base.ImageList != null)
					if (base.ImageIndex >= 0)
					{
						if(transparent)
							return maketransparent(base.ImageList.Images[base.ImageIndex]);
						else
							return base.ImageList.Images[base.ImageIndex];
					}
				return this.image;
			}
			set
			{
				if (this.Image != value)
				{
					if(this.imageoriginale != value)
					{
						// Nouvelle image
						this.imageoriginale = (Image)value.Clone();
						this.image = value;
						if (this.image != null)
						{
							base.ImageIndex = -1;
							base.ImageList = null;
							if(this.transparent)
							{
								this.image = maketransparent(value);
							}
						}
					}
					else
					{
						this.image = value;
						if (this.image != null)
						{
							base.ImageIndex = -1;
							base.ImageList = null;
						}
					}
				}
				base.Image = this.image;
				this.Invalidate();
			}
		}
		#endregion
	}
	#endregion