Gebruik de kleuren van uw programma in Visual Studio

Dit voorbeeld is ontstaan ​​uit een vraag in dit artikel .

De controle ColorDialog presenteert een traditioneel kleurenpalet, maar de waarheid is dat Visual Studio is veel mooier en toont alle kleuren bij naam zoals gedefinieerd in de System.Drawing object eigenschappen.

Gezien het probleem dat er geen controle om ons deze lijst van kleuren die we zien hoe we constriur een onszelf.

Zo hebben we een nieuw project en twee vormen.

In de eerste vormen een stokje hoeft alleen de Form 2 noemen, zoals in de volgende afbeelding:

coloresNombre001

knop en de code is als volgt:

 BtnColor_Click Private Sub (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColor.Click
 Als Nieuw Form2 Dim vForm2
 vForm2.ShowDialog ()
 End Sub

en in deze vorm zal n botoes keuzelijst en twee (accepteren en annuleren) als in de volgende vorm:

coloresNombre002

In Load van het formulier bij te stellen een aantal eigenschappen van de ListBox en dragen de namen van de kleuren met de volgende code:

 Form2_Load Private Sub (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 ListBox1.DrawMode = DrawMode.OwnerDrawFixed
 ListBox1.ItemHeight = 20

 ListBox1.Items.Clear ()
 ListBox1.BeginUpdate ()
 Voor elke PI als Reflection.PropertyInfo In gettype (Color). GetProperties (of Reflection.BindingFlags.Static Reflection.BindingFlags.Public)
 ListBox1.Items.Add (pi.Name)
 Volgende
 ListBox1.EndUpdate ()
 End Sub

In de eerste regel van Load "ListBox1.DrawMode = DrawMode.OwnerDrawFixed" vast te stellen dat alle elementen van controle handmatig worden getrokken en hebben dezelfde hoogte. Dit ademças, DrawItem gebeurtenis veroorzaakt een show vlak voor elk item.

Om de DrawItem geval van ListBox, selecteert u (in de ontwerpweergave) de ListBox1 te stellen, we druk op F4 om de eigenschappen te bekijken, en de bovenkant van het vak Eigenschappen selecteert u de bliksemschicht aan het evenement dat de controle beschikbaar is te zien , we DrawItem en we dubbelklikken. De volgende afbeelding laat zien hoe:

coloresNombre003

en dit is de code van DrawItem evenement

 ListBox1_DrawItem Private Sub (ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
 Dim rechthoek als rechthoek = e.Bounds

 Als (e.State En DrawItemState.Selected) Dan
 e.Graphics.FillRectangle (SystemBrushes.Highlight, rechthoek)
 Anders
 e.Graphics.FillRectangle (Brushes.White, rechthoek)
 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))

 Als (e.State En DrawItemState.Selected) Dan
 e.Graphics.DrawString (nombreColor, e.Font, Brushes.White, rectangulo.X + 34, rectangulo.Y + 2)
 Anders
 e.Graphics.DrawString (nombreColor, e.Font, Brushes.Black, rectangulo.X + 34, rectangulo.Y + 2)
 End If
 End Sub

Nu hoeven we alleen maar naar de knoppen te programmeren eventosde zoals weergegeven in de volgende code:

 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

Nou, om de toepassing te testen ... als alles goed ging, ziet er als volgt uit:

coloresNombre004

Ik laat een aantal definities:

Graphics.FillRectangle (methode) vult het binnenste van een rechthoek die door een paar coördinaten, een breedte en hoogte.

Graphics.DrawRectangle (methode): Een rechthoek die door een paar coördinaten, een breedte en hoogte.

Graphics.DrawString (Methode): Teken de opgegeven tekenreeks op de opgegeven locatie en met de opgegeven Brush en Font objecten.

Hoop dat dit helpt en u kunt gebruiken in uw projecten.

11 Responses to "Gebruik Visual Studio kleuren in uw programma"

  1. Informatie Bitacoras.com ...

    Prijs in Bitacoras.com: Dit voorbeeld is ontstaan ​​uit een query in dit artikel. De controle ColorDialog tresenta ons een traditionele kleurenpalet, maar het is tru e die van Visual Studio is veel mooier en toont alle kleuren voor uw n .....

  2. Cristyan zegt:

    Zeer goed voorbeeld, dank je.

  3. Jose Luis zegt:

    GREAT!
    Wordt zeer gewaardeerd!

  4. Oscar Daniel zegt:

    ! Heel goed!
    het enige dat ik werkte was de knop Annuleren.

  5. Erick zegt:

    niet in slaagt het selecteren van de transparante kleur, zal het zijn? ........... de andere kleuren als werkt

    salu2

    • Elisa zegt:

      dat de transparante kleur niet kan worden toegepast als de achtergrondkleur van vorm, maar indien toegepast op andere bedieningsorganen.

      Bedankt voor het commentaar!

  6. gercer89 zegt:

    heeft mijn leven gered dit voorbeeld! ... maar als ik naar de prpiedades scherm waar je de kleur te zien?, omdat het laat me zien "My.Forms.Form1.BackColor." dankzij salu2

  7. diego zegt:

    hallo
    Ik krijg een foutmelding verwacht identificatie precies. <A Als (e.State En DrawItemState. Select , red.) Dan
    e.Graphics.FillRectangle (SystemBrushes.Highlight, rechthoek)

    HELP ME DOOR FA
    Graciass

  8. Henry zegt:

    Groeten ...
    Ik ben op zoek naar technieken om een ​​mooier ontwerp van de controles die moeten zijn als het vliegveld te maken, maar ik heb geen idee of kan ik iets vinden kunt u als u mij zou kunnen helpen met die van anetmano hartelijk dank ...

  9. David zegt:

    deze VERA, heel erg bedankt voor dit voorbeeld. Zal ik in staat zijn om het toe te passen om aan mijn behoeften

    Dank u van Merida, Yucatan

Commentaar