Ich versuche, eine benutzerdefinierte Schaltfläche zu meinem Formular (das hat FormBorderStyle = none) mit Visual Studio 2005 zu tun. Ich habe meine 3 Schaltflächen Bilder in einer ImageList mit der Schaltfläche verknüpft.
%Vor%Alles funktioniert, aber es gibt einen Haken. Immer wenn ich den Mauszeiger über die Schaltfläche bewege, bekomme ich einen wirklich nervigen grauen Hintergrund.
Wie kann ich das entfernen?
Der graue Hintergrund ist auf die Einstellung von "System.Windows.Forms.FlatStyle.Flat" zurückzuführen, es ist das Standardverhalten, da es die Schaltfläche markieren muss, wenn Sie den Mauszeiger bewegen. Um dies zu eliminieren, müssen Sie möglicherweise eine benutzerdefinierte Schaltflächenklasse schreiben, von der ursprünglichen Schaltfläche übernehmen und eine benutzerdefinierte Darstellung vornehmen, um dies zu erreichen.
Btw, anstatt "aktiviert" in MouseHover, sollten Sie es in MouseEnter tun. MouseEnter und MouseLeave ist ein Paar, das angibt, ob sich die Maus innerhalb der Schaltfläche befindet oder nicht, und sie wird einmal pro Ein- / Ausstieg ausgelöst. Wo immer MouseHover brennt, wann immer sich die Maus innerhalb der Taste bewegt hat, wodurch unnötige Einstellungen von "aktiviert" erzeugt werden.
Ich habe einen Vorschlag.Erstellen Sie Ihre eigene Schaltfläche Klassenherleitung Formular Button.The überschreiben Sie das MouseEnter-Ereignis in diesem. Entfernen Sie einfach den Code für den Aufruf der Basis-Implementierung.
%Vor%PS: Sie können das MouseEnter-Ereignis nicht außerhalb der abgeleiteten Klasse verwenden (z. B. ein Projekt, das dieses Steuerelement verwendet)
Hi, Sie können diese Änderungen einfach auf Ihre Schaltfläche anwenden, indem Sie diese beiden Codezeilen verwenden.
Setzen Sie den FlatStyle der Schaltfläche auf Flat
%Vor%Setzen Sie MouseOverBackColor der Taste auf Transparent
%Vor%Hoffe, das wird helfen. Danke
Um das Problem zu lösen, setzen Sie MouseOverBackColor auf transparent, um den grauen Hintergrund zu entfernen.