Zdravím. Využívám v DataGridView sloupce typu DataGridViewComboBoxColumn a potřeboval jsem, aby bylo možné při editaci hodnoty v takovém sloupci použít tzv. Autocomplete, tedy vyhledávání podle postupně zadávaných znaků. Použil jsem následující konstrukci s událostí EditingControlShowing:
Private Sub dgwTabulka_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dgwTabulka.EditingControlShowing
If TypeOf e.Control Is ComboBox Then
With DirectCast(e.Control, ComboBox)
.DropDownStyle = ComboBoxStyle.DropDown
.AutoCompleteMode = AutoCompleteMode.SuggestAppend
.AutoCompleteSource = AutoCompleteSource.ListItems
End With
End If
End Sub
Vše funguje jak má, pouze když opouštím takto editovanou buňku tabulátorem, tak zůstane prázdná (V události CellEndEdit také vidím při krokování hodnotu DBNull). Pokud ji opustím klávesou Enter, je vše v pořádku a do buňky se vloží hodnota vybraná v rozbaleném seznamu. Zajímavé je, že při editaci běžných textových buněk se po vložení prvního znaku objeví v RowHeaderCell symbol tužky, který značí, že se něco edituje, ale při psaní v "Combo" buňce, která má rozbalený seznam se tento symbol nezobrazí. Také je s podivem, že nastavím-li .DropDownStyle = ComboBoxStyle.DropDownList, tak i po opuštění buňky tabulátorem se hodnota uloží. Bohužel se zase ztratí požadovaná funkcionalita s automatickým dokončováním a vyhledává se jen podle prvního písmene. Už s tím laboruju tři hodiny a nemohu na nic přijít. Poradí někdo?
|