La listbox et l'effet aero
Bonjour,
Je vous explique mon problème:
J'ai developpé une application Windows Form en vb.net et j'y ai rajouté du code pour y avoir un effet aero sur Windows Vista et Seven. Voyant que le texte des labels et des boutons étaient illisibles (quand l'aero était activé sur mon app), j'ai cherché et trouvé sur Internet des controls prévues a cet effet. Seulement, maintenant, j'ai besoin d'une listbox et, comme les labels "basiques", le texte des éléments de ma listbox est complètement illisible. J'ai cherché des controles modifiées mais je n'ai pas trouvé. Si je modifie la propriété "transparencykeys" en une autre couleur et "Backcolor" aussi, le problème des texte illisibles est résolu mais quand je clique sur la zone aero, ça selectionne ce qui est derrière mon application. Sauriez-vous comment je peut faire pour que je puisse avoir une listbox lisible ?
Merci d'avance et bonne journée.
backcolor ou backgroundimage
bonjour
La couleur choisie dans TransparencyKey determine la zone non-reactive du controle.Essaie :
-soit BackgroundImage
Dans BackgroundImage tu mettras un BitMap de couleur approprie que tu peux creer dans Paint.
-soit ForeGround Couleur du Texte comme ca le BackGround reste reactif.
bon code...
backcolor ou backgroundimage
bonjour
excuse -moi mais c'est de memoire que j'ai parle de BackGroundImage avec un TransparencyKey pour dessiner un form personnalise.
Helas il n'existe de telle propriete pour les controles de type liste(combobox,listbox,treeview).
Ces controles ont par contre une propriete plus interessante :Evenement Drawitem qui permet de personnaliser l'affichage des items.
voici un bout de code que tu pourrais utiliser:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
Public Class Form1
Public Sub New()
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
'Mettre DrawMode,necessaire
Me.ListBox1.DrawMode = DrawMode.OwnerDrawFixed
For I As Integer = 0 To 10
Me.ListBox1.Items.Add("Item" & (I + 1).ToString)
Next
End Sub
Private Sub ListBox1_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
'1/appel a DrawBackground
e.DrawBackground()
'2/Couleur de Background
Dim objList As ListBox = CType(sender, ListBox)
Dim monBrushBackGround As Brush = New SolidBrush(Color.Aquamarine)
e.Graphics.FillRectangle(monBrushBackGround, e.Bounds)
'3/Definit une fonte,avec Bold, et Couleur du texte
Dim itemFont As Font = e.Font
Dim metFont As Boolean = False
' Dessiner en Bold si element selectionne
If (e.State And DrawItemState.Selected) = _
DrawItemState.Selected Then
metFont = True
itemFont = New Font(itemFont, FontStyle.Bold)
End If
' Dessine l'Item ListBox en "Rouge ou ce que tu veux"
If ListBox1.Items(e.Index) IsNot Nothing Then
e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), _
itemFont, New SolidBrush(Color.Red), e.Bounds)
End If
If metFont Then itemFont.Dispose()
' Dessine le Rectangle de Focus
e.DrawFocusRectangle()
End Sub
End Class |
bon code....