Danke für Deine Hilfe. Ich bin mal gespannt, was Dein Quelltext an neuen Infos hergibt.
Ich habe mich noch ein wenig durch das Web gegraben und folgende Lösung gefunden ...
- BackgroundImage anstelle von Image wählen.
Grund: Die Button-Control erzeugt unerwünschte Paddings, auch wenn ImageAlign TopLeft gesetzt ist.
- Folgende Eingenschaften setzen:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| BackgroundColor = Transparent BackgroundImageLayout = None FlatStyle = Flat FlatAppearance.BorderSize = 0 FlatAppearance.MouseDownBackColor = Transparent FlatAppearance.MouseOverBackColor = Transparent UseVisualStyleBackColor = False |
Nun muss nur noch der Fokus-Rahmen beseitigt werden.
stackoverflow.com/qu...yle-on-a-button-in-c
Ich habe es noch ein wenig abgewandelt, um das zur Entwurfszeit einstellen zu können.
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:
| namespace MyDotNet.Windows.Forms { public class Button : System.Windows.Forms.Button { public Button() : base() { }
#region ShowFocusCues protected System.Boolean showFocusCues;
protected override bool ShowFocusCues { get { return this.showFocusCues; } } #endregion
#region FocusCues public virtual System.Boolean FocusCues { get { return this.showFocusCues; } set { this.showFocusCues = value; } } #endregion } } |
In den Quelltexten zur Form die entsprechenden Buttons von dieser Klasse ableiten. Jetzt gibt es in den Eigenschaften der IDE eine Eigenschaft FocusCues die bestimmt, ob der Fokus-Rahmen gezeichnet wird oder nicht.
@Ralf: Wie Du schon gechrieben hast müssen auch hier die verschiedenen Zustände ermittelt und die entsprechenden Images geladen werden.
Edit:
Eigenschaften ergänzt.