Ändern Sie die Rahmenfarbe der Winforms-Menü-Dropdown-Liste

8

Ist es möglich, die Rahmenfarbe einer Werkzeugleisten-Dropdown-Liste zu ändern?

In meinem Beispiel unten möchte ich, dass das Dropdown-Menü eine Farbe (blau) hat, ohne dass der weiße Rahmen angezeigt wird, aber das Hauptmenü ("Mein Menü") weiß angezeigt wird.

Irgendwelche Ideen?

    
Cameron Castillo 31.08.2015, 09:17
quelle

4 Antworten

10

Is it possible to change the border color of a toolstrip menu dropdown list.

Ja. Eine Klasse, die von ProfessionalColorTable erbt, funktioniert wie erwartet:

%Vor%

Beim Laden des Formulars:

%Vor%

Wenn visuelle Stile nicht aktiviert sind, werden nicht alle Farbtabellenelemente verwendet und stattdessen wird SystemColors verwendet. Sie aktivieren visuelle Stile in Main() :

%Vor%

Sie können auch die Systemfarben wie im ctor angezeigt deaktivieren. Der Standardwert sollte false sein, unabhängig davon, ob visuelle Stile aktiviert sind oder nicht, aber vielleicht hat etwas anderes sie geändert?

%Vor%

Sowohl EnableVisualStyles() als auch UseSystemColors = false; müssen vorhanden sein, damit all die Rendering-Elemente in Ihrer Farbtabelle implementiert werden können, ansonsten werden nur einige davon verwendet. (Obwohl MenuBorder scheint zu funktionieren, egal was.) Ansonsten sind die Ergebnisse wie erwartet:

Der Menüverlauf geht von AliceBlue zu DodgerBlue; Ein Objekt mit der Maus darüber verwendet einen von oben nach unten verlaufenden Farbverlauf von LawnGreen zu MediumSeaGreen (Maus nicht gezeigt).

Im geöffneten Zustand ist der Menürand Fuschia (mmmm, beruhigend!)

Wenn Sie die Maus über eines der Objekte bewegen (Maus nicht gezeigt), verwendet das Objekt die MenuItemSelected Farbe, die Consilk war.

Wenn Sie Schwierigkeiten haben, Ihre Überschreibungen zum Laufen zu bringen, überprüfen Sie, ob Sie die richtigen verwenden (oder dass sie meinen, was der Name impliziert, einige sind zuerst irreführend).

Sie können auch überprüfen, ob Sie ein MenuStrip für das Menü verwenden, Net hat eine andere (ältere) Menü-Klasse, obwohl Sie suchen müssen, um es zu finden. Sie können auch ein beliebiges Design ändern oder deaktivieren, um zu sehen, ob dies nachteilige Auswirkungen haben könnte.

    
Plutonix 02.09.2015, 15:15
quelle
6

Um die Rahmenfarbe zu ändern, genügt es, der Plutonix-Lösung zu folgen, die in der akzeptierten Antwort beschrieben wird. Um diesen weißen Rahmen zwischen dem Element- und Menürahmen zu entfernen, sollten Sie jedoch eine der folgenden Lösungen verwenden:

Lösung 1

Sie können dies tun, indem Sie Ihre benutzerdefinierte Farbtabelle implementieren, die ProfessionalColorTable und Überschreiben der korrekten Eigenschaften. Gehen Sie dazu folgendermaßen vor:

Schritte

  1. Fügen Sie einen ToolStrip in Ihr Formular ein und fügen Sie DropDownButton und seine Unterelemente hinzu und setzen Sie ForeColor von Unterelementen auf Weiß.
  2. Erstellen Sie eine CustomColorTable-Klasse, die von ProfessionalColorTable
  3. Überschreiben Sie ImageMarginGradientBegin, ImageMarginGradientMiddle, ImageMarginGradientEnd, ToolStripDropDownBackground und geben Sie die gewünschte Farbe (blau) .from
  4. zurück
  5. In Ihrem Formularlade-Ereignis wurde die Renderer-Eigenschaft von ToolStripManager , um einen ToolStripProfessionalRenderer zu verwenden, der Ihre CustomColorTable verwendet.

CustomColorTable-Code

%Vor%

Formularcode laden

%Vor%

Screenshot

Hier ist ein normaler Screenshot

Und hier ist ein 2x vergrößerter Screenshot:

Lösung 2

Es gibt auch eine alternative Lösung, die anwendbar ist, wenn Sie Bilder in Ihren Menüpunkten nicht verwenden möchten. Suchen Sie in diesem Fall nach der DropDown-Eigenschaft Ihrer Dropdown-Schaltfläche, und setzen Sie sie auf ToolStripDropDownMenu. Setzen Sie dann die ShowImageMargin-Eigenschaft auf false und BackColor auf die gewünschte Farbe (blau).

%Vor%

    
Reza Aghaei 02.09.2015 17:50
quelle
0

Ich kann jetzt die Demo-Anwendung nicht machen, aber Screenshots in diesem Artikel Ссылка beweist uns das Ändern der Rahmenfarbe ist möglich.

Dieser Typ hat eine Bibliothek entwickelt, aber es basiert auf der Standard-ToolStrip-Implementierung.

Ich hoffe, dass dieser Link hilfreich sein wird.

    
Andrey Shvydky 31.08.2015 12:39
quelle
0

Sie können den Artikeln negative Ränder geben, um den Rahmen zu verdecken.

    
MichaelN 02.09.2015 13:23
quelle

Tags und Links