Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ownerdraw Combobox : PB avec DrawFocusRectangle

2 réponses
Avatar
LiR
Bonjour,

J'ai une Form avec un Combobox nommé ComboBox1, dont les propriétés
particulières sont :

DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed
DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList


Dans l'événement DrawItem, je dessine le rectangle de focus sur l'élément
actif :

Private Sub ComboBox1_DrawItem(ByVal sender As Object, ByVal e As
system.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
e.DrawFocusRectangle()
End Sub

Lorsque le combobox est le seul contrôle sur la Form, le rectangle de focus
se dessine correctement.
Dès que j'ajoute un autre contrôle à la Form (un bouton, par exemple), le
rectangle de focus ne se dessine plus.

Cela me laisse très perplexe...
Quelqu'un connaitrait l'origine de ce phénomène et/ou une solution?

En vous remerciant,

LiR

2 réponses

Avatar
Jacques93
Bonjour LiR,
LiR a écrit :
Bonjour,

J'ai une Form avec un Combobox nommé ComboBox1, dont les propriétés
particulières sont :

DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed
DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList


Dans l'événement DrawItem, je dessine le rectangle de focus sur l'élément
actif :

Private Sub ComboBox1_DrawItem(ByVal sender As Object, ByVal e As
system.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
e.DrawFocusRectangle()
End Sub

Lorsque le combobox est le seul contrôle sur la Form, le rectangle de focus
se dessine correctement.
Dès que j'ajoute un autre contrôle à la Form (un bouton, par exemple), le
rectangle de focus ne se dessine plus.

Cela me laisse très perplexe...
Quelqu'un connaitrait l'origine de ce phénomène et/ou une solution?

En vous remerciant,

LiR



Essaie en remplaçant

e.DrawFocusRectangle()

par

ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds)

--
Cordialement,

Jacques.
Avatar
LiR
J'ai juste ajouté une ligne pour ne dessiner le focus que sur l'élément "en
cours" :

If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds)
End If

Et ça marche très bien !

Merci beaucoup.

"Jacques93" a écrit :

Bonjour LiR,
LiR a écrit :
> Bonjour,
>
> J'ai une Form avec un Combobox nommé ComboBox1, dont les propriétés
> particulières sont :
>
> DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed
> DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
>
>
> Dans l'événement DrawItem, je dessine le rectangle de focus sur l'élément
> actif :
>
> Private Sub ComboBox1_DrawItem(ByVal sender As Object, ByVal e As
> system.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
> e.DrawFocusRectangle()
> End Sub
>
> Lorsque le combobox est le seul contrôle sur la Form, le rectangle de focus
> se dessine correctement.
> Dès que j'ajoute un autre contrôle à la Form (un bouton, par exemple), le
> rectangle de focus ne se dessine plus.
>
> Cela me laisse très perplexe...
> Quelqu'un connaitrait l'origine de ce phénomène et/ou une solution?
>
> En vous remerciant,
>
> LiR

Essaie en remplaçant

e.DrawFocusRectangle()

par

ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds)

--
Cordialement,

Jacques.