begin process at 2012 02 15 02:24:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

dessiner un rectangle de couleur dans un combo box (VB.NET)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

dessiner un rectangle de couleur dans un combo box (VB.NET)

vendredi 23 avril 2004 à 19:30:28 | dessiner un rectangle de couleur dans un combo box (VB.NET)

janctil

Bonjour à tous,

J'ai un petit problème avec une liste déroulante me servant à afficher une liste de couleur, avec un rectangle affichant la couleur. L'affichage de la liste se fait très bien, mais quand je sélectionne un élément, le combo affiche ceci "Color [LimeGreen]" ... j'ai essayé de redessiner le rectangle (sur l'évén. SelectIndexChanged par ex.) après la sélection, mais rien ne marche...

Voici le code sur la liste déroulante :

'Sur le form load, je charge la liste
Private Sub frmSettings_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ColorName As String
For Each ColorName In _
System.Enum.GetNames _
(GetType(System.Drawing.KnownColor))
ComboBox1.Items.Add(Color.FromName(ColorName))
Next
End Sub

'Dessine les rectangles et les noms de couleurs dans la liste
Private Sub ComboBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
If e.Index < 0 Then
e.DrawBackground()
e.DrawFocusRectangle()
Exit Sub
End If

'Obtenir la couleur à partir de l'élément de la liste
Dim aColor As Color = _
CType(ComboBox1.Items(e.Index), Color)

'Obtenir un rectangleheight
Dim rect As Rectangle = New Rectangle _
(2, e.Bounds.Top + 2, e.Bounds.Height, _
e.Bounds.Height - 4)

Dim br As Brush

e.DrawBackground()
e.DrawFocusRectangle()

If e.State = _
Windows.Forms.DrawItemState.Selected Then
br = Brushes.White
Else
br = Brushes.Black
End If

'Dessiner un rectangle et le remplir
e.Graphics.DrawRectangle(New Pen(aColor), rect)
e.Graphics.FillRectangle(New SolidBrush _
(aColor), rect)

'Dessiner une bordure
rect.Inflate(1, 1)
e.Graphics.DrawRectangle(Pens.Black, rect)

'Dessiner le nom de la couleur
e.Graphics.DrawString(aColor.Name, _
cboChatSend.Font, br, e.Bounds.Height + 5, _
((e.Bounds.Height - cboChatSend.Font.Height) _
\ 2) + e.Bounds.Top)
End Sub

Private Sub ComboBox1_MeasureItem(ByVal sender As Object, ByVal e As System.Windows.Forms.MeasureItemEventArgs) Handles ComboBox1.MeasureItem
e.ItemHeight = 16
End Sub

Merci à l'avance
J
samedi 24 avril 2004 à 00:21:53 | Re : dessiner un rectangle de couleur dans un combo box (VB.NET)

nhervagault

Administrateur CodeS-SourceS
Voila amuses toi bien



Friend WithEvents comboboxcarre1 As New comboboxcarre()
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

comboboxcarre1.Location = New Point(10, 10)
comboboxcarre1.Items.Add("hello")
Me.Controls.Add(Me.comboboxcarre1)

End Sub




End Class
Public Class comboboxcarre
Inherits ComboBox
Public Sub New()

Me.DrawMode = DrawMode.OwnerDrawFixed
'forcement un DropDownList
Me.DropDownStyle = ComboBoxStyle.DropDownList
End Sub

Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)

Me.DropDownStyle = ComboBoxStyle.DropDownList
MyBase.OnDrawItem(e)
If (e.Index = -1) Then
Return
End If
Dim oB As System.Drawing.SolidBrush = New System.Drawing.SolidBrush(Me.ForeColor)
e.Graphics.DrawString(Me.Items(e.Index).ToString(), Me.Font, oB, 15, 0)
e.Graphics.FillRectangle(New SolidBrush(Color.Blue), New Rectangle(0, 0, 15, 15))
oB.Dispose()
End Sub
End Class
samedi 24 avril 2004 à 02:59:17 | Re : dessiner un rectangle de couleur dans un combo box (VB.NET)

janctil


super, je vais utilisé ta classe, ça me simplfie la vie... merci bcp..
samedi 24 avril 2004 à 17:18:16 | Re : dessiner un rectangle de couleur dans un combo box (VB.NET)

nhervagault

Administrateur CodeS-SourceS

pour plus de détail va sur le site de richard clark

et recherche les imagecombobox ou imagelistbox

il y a un article dessus en C# d'ou l'exemple est inspiré

Merci à Richard ;-)
dimanche 25 avril 2004 à 12:33:12 | Re : dessiner un rectangle de couleur dans un combo box (VB.NET)

nhervagault

Administrateur CodeS-SourceS

Tiens si tu veux les couleurs windows .net
utilise la reflection

c'est pratique ;-)
code un peu commenté mais non optimisé




Private WithEvents combocouleur As New combocouleur
Private Sub changer_couleur(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles combocouleur.SelectedIndexChanged
Button2.BackColor = Color.FromName(combocouleur.Items(combocouleur.SelectedIndex).ToString)

End Sub




Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)

combocouleur.Location = New Point(10, 10)
'on charge toutes les couleurs
'en utilisant system.reflection --> besoin de cet import
For Each f As PropertyInfo In GetType(Color).GetProperties()
combocouleur.Items.Add(f.Name)
Next

Dim i As Int32
For i = combocouleur.Items.Count - 1 To combocouleur.Items.Count - 9 Step -1
combocouleur.Items.RemoveAt(i) 'enlever les dernieres property
Next
combocouleur.Items.RemoveAt(0) ' pour enlever transparent
'faut pas oublier de l'ajouter a la form
Me.Controls.Add(combocouleur)
'ajout d'un ecouteur sur le changement d'index
'qui appelle la fonction changer_couleur
AddHandler combocouleur.SelectedIndexChanged, AddressOf changer_couleur

End Sub
End Class


Public Class combocouleur
Inherits System.windows.forms.ComboBox

Public Sub New()
'on dessine le controle
Me.DrawMode = DrawMode.OwnerDrawFixed
Me.DropDownStyle = ComboBoxStyle.DropDownList
End Sub
Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)

'Me.DropDownStyle = ComboBoxStyle.DropDownList


MyBase.OnDrawItem(e)

'lorsqu'il y a pas d'items on part ;-)
If e.Index < 0 Then Return
'dessinne la couleur
e.Graphics.FillRectangle(New SolidBrush(Color.FromName(Me.Items(e.Index))), New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width - 90, e.Bounds.Height))
'ecrit le nom de la couleur
e.Graphics.DrawString(Me.Items(e.Index).ToString, Me.Font, New SolidBrush(Color.Black), 10, e.Bounds.Y)

End Sub


End Class


Cette discussion est classée dans : system, couleur, liste, rectangle, combobox1


Répondre à ce message

Sujets en rapport avec ce message

liste de couleur [ par gitan ] aidez ce misérable débutant : il ne sais même pas (si c'est possible!) comment marquer avec une "font" de couleur des lignes dans une liste.Genre dans Couleur Zone de liste [ par goldgorse ] Bonjour,Je voudrais, sous access97 et avec vba, mettre une ligne d'une zone de liste en couleur et ce de façon evenementielle. en fait dans cette zone Modification de couleur de lignes dans une zone de liste [ par zerot ] Bonjour,après avoir opéré une requete, j'affiche mes résultats dans une zone de liste. Je voudrais savoir s'il est possible de choisir une couleur pou Couleur dans une liste ou un formulaire [ par Ramire ] Bonjour,Je n'arrive pas sous access à changer la couleur des lignes d'une liste dans un formulaire!!Par exemple mettre en rouge les lignes négatives.. Couleur conditionelle dans Zone de Liste [ par nicod.lyon ] Bonjour!Cette fois, je cherche à utiliser des couleurs DIFFERENTES dans une Zone de ListeMa zone de liste est remplie par une requete SQLChaque ligne Couleur du texte dans une zone de liste [ par sebast105 ] Bonjour,Est-il possible de mettre une couleur spécifique à une ligne d'une zone de liste ?Merci d'avanceSébastien glisser déplacer dune liste box vers textbox [ par hy_honey ] bonjour a tousje suis en vb.net et je bloc depuid quelque jour , j'ai essayer de codé un drap and drop d'une liste box vers un text box c'est a dire q rectangle [ par moonflower ] Hello!J'aimerais dessiner un rectangle sur ma Form.Pour le moment je ne connais que la fonction Line, il y a surement mieux, non?J'en profite pour pos flexgrid: couleur cellule? [ par loskiller62 ] CoucouJ'aimerais savoir si c'est possible, et si oui comment faire pour colorier une ligne de cellules (ou une cellule qu'importe) dans un controle MS Analyse d'une vidéo [ par Cestmoi ] Bonjour,J'ai une vidéo où le fond est d'une couleur uni. Par dessus, j'ai un rectangle d'une autre couleur uni.Je voudrais savoir s'il est possible qu


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,075 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales