Benutzerdefinierte Schaltfläche in C #: Wie Hover-Hintergrund zu entfernen?

8

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?

    
Matías 12.10.2008, 04:56
quelle

8 Antworten

11

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.

    
faulty 12.10.2008, 05:17
quelle
39
%Vor%     
Vassili 01.06.2010 15:27
quelle
2

Ich habe das gelöst, indem ich eine Beschriftung anstelle einer Schaltfläche verwendet habe.

%Vor%

PS: Beachten Sie, dass ich jetzt einen zweistufigen Knopf anstelle von drei verwende. Es ist beabsichtigt (ich weiß, dass ich noch drei verwenden kann).

    
Matías 12.10.2008 22:10
quelle
2

create Mouse Enter-Ereignis, das unten angegeben ist.

%Vor%

Ordnen Sie dieses Ereignis dann allen Tasten zu.

Fröhliche Programmierung:)

    
Fazil Mir 20.12.2013 23:32
quelle
2

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)

    
Ahmed Suror 23.09.2015 01:34
quelle
1

Hi, Sie können diese Änderungen einfach auf Ihre Schaltfläche anwenden, indem Sie diese beiden Codezeilen verwenden.

  1. Setzen Sie den FlatStyle der Schaltfläche auf Flat

    %Vor%
  2. Setzen Sie MouseOverBackColor der Taste auf Transparent

    %Vor%

Hoffe, das wird helfen. Danke

    
Peck_conyon 12.03.2016 12:58
quelle
0

Sie können auch aufhören, die Farbe der Schaltfläche zu ändern, indem Sie die Option IsHitTestVisible in Button Properties & gt; common & gt; IsHitTestVisible Vielleicht kann das auch helfen ...

    
Robin 08.05.2014 16:36
quelle
-1

Um das Problem zu lösen, setzen Sie MouseOverBackColor auf transparent, um den grauen Hintergrund zu entfernen.

    
sospeter mong'are 03.09.2017 23:41
quelle

Tags und Links