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

datagridview

2 réponses
Avatar
PR
J'ai eu un colonne qui contient un combobox
mais celui ci se comporte seulement comme
une liste déroulante ou on doit choisir une valeur
dans la liste.
Je voudrai que l'utilisateur puisse proposer
une nouvelle donnée. il y a bien la proriété
displaystyle pour la colonne ou pour la cellule
mais je ne parviens pas au but.
merci

PRVB6

2 réponses

Avatar
Gilles TOURREAU
Le Fri, 26 Oct 2007 15:35:09 +0200, PR a écrit:

J'ai eu un colonne qui contient un combobox
mais celui ci se comporte seulement comme
une liste déroulante ou on doit choisir une valeur
dans la liste.
Je voudrai que l'utilisateur puisse proposer
une nouvelle donnée. il y a bien la proriété
displaystyle pour la colonne ou pour la cellule
mais je ne parviens pas au but.
merci

PRVB6





Traitez l'événement EditingControlShowing de votre DataGridView afin de
mettre DropDownStyle à "DropDown" :

If (TypeOf e.Control Is ComboBox) Then

Dim cb As ComboBox

cb = CType(e.Control, ComboBox)

cb.DropDownStyle = ComboBoxStyle.DropDown
End If

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
PR
Merci de votre réponse.
J'ai un peu approfondi la question et comme il me semble que ce problème
est très fréquent et intéressera bcp de monde
voici ma solution:


'g est mon datagridview
'j'ai rajouté sorted
'on traite 2 évènements
Private Sub g_EditingControlShowing(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles
g.EditingControlShowing

If (TypeOf e.Control Is DataGridViewComboBoxEditingControl) Then

' cb_ec représente le combobox hébergé dans DataGridViewComboBoxCell.

Dim cb_ec As DataGridViewComboBoxEditingControl = e.Control

If Not cb_ec Is Nothing Then

cb_ec.DropDownStyle = ComboBoxStyle.DropDown

Dim ss As String = cb_ec.Text

cb_ec.Sorted = True

cb_ec.Text = ss

End If

End If

'RemoveHandler cb.SelectedIndexChanged, AddressOf DGVComboIndexChanged

'AddHandler cb.SelectedIndexChanged, AddressOf DGVComboIndexChanged



Private Sub g_CellValidating(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles
g.CellValidating

If TypeOf (sender.EditingControl) Is DataGridViewComboBoxEditingControl Then

Dim cb_ec As DataGridViewComboBoxEditingControl = sender.EditingControl

'la validation affecte cb_ec

If Not cb_ec Is Nothing Then

Dim grid As DataGridView = cb_ec.EditingControlDataGridView

'la grille qui contient cb_ec

If cb_ec.Text = "" Then

'on n'accepte pas un item vide

Else

Dim value As Object = cb_ec.Text

If cb_ec.Items.IndexOf(value) = -1 Then

'cb_ec.Items.Add(value)

cb_ec.Items.Insert(0, value)

Dim cb_ec_Col As DataGridViewComboBoxColumn =
grid.Columns(grid.CurrentCell.ColumnIndex)

If Not cb_ec_Col Is Nothing Then

cb_ec_Col.Items.Add(value)

End If

Else

End If

grid.CurrentCell.Value = value

End If

Else

End If

Else

'ce n'est pas un dgvComboBoxEditingControl

End If





je me suis beaucoup inspiré de '
http://entwickler-forum.de/showthread.php?p8060#post138060

mais je ne comprends pas le pourquoi du Ctype de la 2ème ligne après la 1ère
:

If (TypeOf e.Control Is DataGridViewComboBoxEditingControl) Then

Dim cmb As DataGridViewComboBoxEditingControl = CType(e.Control,
DataGridViewComboBoxEditingControl)

et non pas

Dim cmb As DataGridViewComboBoxEditingControl = e.Control

PRVB6



"Gilles TOURREAU" a écrit dans le message de news:

Le Fri, 26 Oct 2007 15:35:09 +0200, PR a écrit:

J'ai eu un colonne qui contient un combobox
mais celui ci se comporte seulement comme
une liste déroulante ou on doit choisir une valeur
dans la liste.
Je voudrai que l'utilisateur puisse proposer
une nouvelle donnée. il y a bien la proriété
displaystyle pour la colonne ou pour la cellule
mais je ne parviens pas au but.
merci

PRVB6





Traitez l'événement EditingControlShowing de votre DataGridView afin de
mettre DropDownStyle à "DropDown" :

If (TypeOf e.Control Is ComboBox) Then

Dim cb As ComboBox

cb = CType(e.Control, ComboBox)

cb.DropDownStyle = ComboBoxStyle.DropDown
End If

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr