Dieses Beispiel entstand aus einer Abfrage in diesem Artikel .
Die Steuerung ColorDialog präsentiert eine traditionelle Farbpalette, aber die Wahrheit ist, dass Visual Studio viel schöner ist und zeigt alle Farben mit Namen wie in den System.Drawing Objekteigenschaften definiert.
Angesichts des Problems, dass es keine Kontrolle, um uns diese Liste der Farben, die wir sehen, wie wir uns selbst ein constriur.
Zum Beispiel brauchen wir ein neues Projekt und zwei Formen.
In der ersten Form ein Schlagstock nur noch die Form 2 aufrufen, wie in der folgenden Abbildung dargestellt:

Taste und der Code ist wie folgt:
BtnColor_Click Private Sub (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColor.Click As New Form2 Dim vForm2 vForm2.ShowDialog () End Sub
und in dieser Form wird n botoes ListBox und zwei (zu akzeptieren und stornieren), wie in der folgenden Form:

In der Form Load-Ereignis zu etablieren einige Eigenschaften der ListBox und tragen die Namen der Farben mit dem folgenden Code:
Form2_Load Private Sub (ByVal sender As System.Object, ByVal e As System.EventArgs) Handies MyBase.Load ListBox1.DrawMode = DrawMode.OwnerDrawFixed ListBox1.ItemHeight = 20 ListBox1.Items.Clear () ListBox1.BeginUpdate () For Each pi In Reflection.PropertyInfo In GetType (Farbe). GetProperties (Oder Reflection.BindingFlags.Static Reflection.BindingFlags.Public) ListBox1.Items.Add (pi.Name) Nächste ListBox1.EndUpdate () End Sub
In der ersten Zeile Load "ListBox1.DrawMode = DrawMode.OwnerDrawFixed" zu etablieren, dass alle Elemente der Steuerung manuell gezogen und haben die gleiche Höhe. Dies ademças, löst DrawItem-Ereignis eine Show, kurz bevor die einzelnen Elemente.
Um das DrawItem-Ereignis des ListBox, wählen Sie (in der Entwurfsansicht) die ListBox1 einzustellen, drücken wir F4, um die Eigenschaften anzuzeigen, und der obere Teil des Eigenschaften-Box wählen Sie den Blitz, um das Ereignis, dass die Steuerung zur Verfügung steht sehen Wir DrawItem und wir Doppelklick. Das folgende Bild zeigt, wie:

und das ist der Code von DrawItem-Ereignis
ListBox1_DrawItem Private Sub (ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem Dim Rechteck als Rechteck = e.Bounds Wenn (e.State Und DrawItemState.Selected) Then e.Graphics.FillRectangle (SystemBrushes.Highlight, Rechteck) Sonst e.Graphics.FillRectangle (Brushes.White, Rechteck) End If Dim As String = ListBox1.Items nombreColor (e.Index) Dim b As New SolidBrush (Color.FromName (nombreColor)) rectangulo.Inflate (-16, -2) e.Graphics.FillRectangle (b, New Rectangle (rectangulo.X, rectangulo.Y, 30, rectangulo.Height)) e.Graphics.DrawRectangle (Pens.Black, New Rectangle (rectangulo.X, rectangulo.Y, 30, rectangulo.Height)) Wenn (e.State Und DrawItemState.Selected) Then e.Graphics.DrawString (nombreColor, e.Font, Brushes.White, rectangulo.X + 34, rectangulo.Y + 2) Sonst e.Graphics.DrawString (nombreColor, e.Font, Brushes.Black, rectangulo.X + 34, rectangulo.Y + 2) End If End Sub
Jetzt brauchen wir nur, um die Tasten zu programmieren eventosde wie im folgenden Code gezeigt:
BtnAceptar_Click Private Sub (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click My.Forms.Form1.BackColor = Color.FromName (ListBox1.SelectedItem) End Sub BtnCancelar_Click Private Sub (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click Me.close () End Sub
Nun, um die Anwendung zu testen ... wenn alles gut ging, sieht folgendermaßen aus:

Ich lasse einige Definitionen:
Graphics.FillRectangle (Verfahren): Füllen des Inneren eines Rechtecks, das durch ein Koordinatenpaar, einer Breite und einer Höhe festgelegt.
Graphics.DrawRectangle (Methode): Zeichnen Sie ein Rechteck durch ein Koordinatenpaar, einer Breite und einer Höhe angegeben.
Graphics.DrawString (Methode): Zeichnen Sie die angegebene Zeichenfolge an der angegebenen Position und mit dem angegebenen Brush und Font-Objekte.
Hope this helps, und Sie können in Ihren Projekten verwenden.
Informationen Bitacoras.com ...
Rate in Bitacoras.com: Dieses Beispiel entstand aus einer Abfrage in diesem Artikel. Die Steuerung ColorDialog Tresenta uns eine traditionelle Farbpalette, aber es ist tru e, dass von Visual Studio ist viel schöner und zeigt alle Farben für Ihre n .....
Sehr gutes Beispiel, danke.
GREAT!
Wird sehr geschätzt!
! Sehr gut!
Das einzige, was ich gearbeitet habe, war die Schaltfläche Abbrechen.
haha, ich habe vergessen, aber der Code ist sehr einfach: Me.close
scheitert die transparente Farbe wählen, wird es sein? ........... die anderen Farben, ob es funktioniert
salu2
ist, dass die transparente Farbe nicht wie die Hintergrundfarbe eines Formulars angewendet werden, aber wenn andere Steuerelemente angewendet.
Dank für die Kommentare!
rettete mir das Leben dieses Beispiel! ... aber als ich um die prpiedades Bildschirm, an dem Sie die Farbe zu sehen bekommen?, weil es mich zu sehen "My.Forms.Form1.BackColor." können dank salu2
Hallo
Ich erhalte eine Fehlermeldung Erwartete Kennung genau. <A If (e.State Und DrawItemState. Select ed) Dann
e.Graphics.FillRectangle (SystemBrushes.Highlight, Rechteck)
Mir helfen, indem FA
Graciass
Grüße ...
Ich suche nach Techniken suchen, um eine schönere Gestaltung von Steuerelementen, wie der Flughafen sein müssen, aber ich habe keine Ahnung, noch konnte ich etwas finden, bitte, wenn Sie mir mit, dass der anetmano helfen könnte ich danke Ihnen sehr ...
Dies VERA, ich danke Ihnen sehr für dieses Beispiel. Kann ich es auf meine Bedürfnisse anwenden
Ich danke Ihnen von Merida, Yucatan