Bonjour à tous,
est-il possible de modifier la couleur de background d'un bouton lorsque la proprieté Enabled est à false ?
Merci
Bonjour à tous,
est-il possible de modifier la couleur de background d'un bouton lorsque la proprieté Enabled est à false ?
Merci
Réponse : non
Sauf (ah quand même), si tu surcharges toi même le Draw du bouton![]()
Ah, ça m'interesse car c'est un composant qui dérive de Button, donc je peux surement surcharger Draw, seulement je vois pas trop comment m'y prendre.
beh, si tu crées un Mybutton , le code suivant fonctionne
Résolu ?
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 public partial class MyButton : Button { public MyButton() { InitializeComponent(); SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true); } protected override void OnPaint(PaintEventArgs pevent) { if (Enabled) { BackColor = Color.Red; } else { BackColor = Color.Blue; } base.OnPaint(pevent); } }
Presque ...
En fait avec ce code je tourne en boucle dans OnPaint. Est-ce que l'implémentation des evenements suivants pourrait être la cause de cette boucle infinie ?
Edit : C'est cette ligne qui provoque la boucle :
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 public partial class Button_Moins : Button { public Button_Moins() { InitializeComponent(); SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true); this.Text = string.Empty; this.FlatStyle = FlatStyle.Flat; this.FlatAppearance.BorderSize = 0; this.Size = new Size(11, 11); this.Padding = new Padding(0, 0, 1, 1); } protected override void OnPaint(PaintEventArgs pevent) { if (!Enabled) { BackColor = Color.Transparent; } base.OnPaint(pevent); } private void ButtonMoins_MouseEnter(object sender, EventArgs e) { this.Cursor = Cursors.Hand; this.Image = Properties.Resources.moinsR; this.FlatAppearance.BorderSize = 1; this.FlatAppearance.BorderColor = Color.Red; } private void ButtonMoins_MouseLeave(object sender, EventArgs e) { this.Cursor = Cursors.Default; this.Image = Properties.Resources.moins; this.FlatAppearance.BorderSize = 0; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part BackColor = Color.Transparent;
peut-etre
sinon, plus simple encore :
Comme ca, tu fiches la paix au Paint()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 protected override void OnEnabledChanged(EventArgs e) { if (Enabled) { BackColor = Color.Red; } else { BackColor = Color.Blue; } base.OnEnabledChanged(e); }![]()
Partager