c# - DataGridViw ComboBox Column Event SelectedindexChanged -
in tha datagridview there 5 columns
1 -product id 2- product name 3-description 4-price , fifth 1
select-country comboboxcolumn
datagridview1.columns.add("id", "product id") datagridview1.columns.add("name", "product name") datagridview1.columns.add("description", "description") datagridview1.columns.add("price", "price") dim datagridviewcol new datagridviewcomboboxcolumn datagridviewcol.items.add("pak") datagridviewcol.items.add("kui") datagridviewcol.name = "select" datagridview1.columns.add(datagridviewcol)
i add handler selectedindexchanged in datagridview editingcontrolshowing
private sub datagridview1_editingcontrolshowing(byval sender system.object, byval e system.windows.forms.datagridvieweditingcontrolshowingeventargs) handles datagridview1.editingcontrolshowing if me.datagridview1.currentcell.columnindex = 4 dim cb combobox = ctype(e.control, combobox) addhandler cb.selectedindexchanged, addressof combobox_selectedindexchanged end if end sub
the selectedindexchanged event
private sub combobox_selectedindexchanged(byval sender system.object, byval e system.eventargs) if ctype(sender, combobox).selectedindex = 0 messagebox.show("pak") else messagebox.show("kui") end if end sub
it works if on datagridview row # 4 messagebox 4 times prompt let if select "pak" 15th row messagebox prompt 15 times need 1 time prompt.
help me. independent of row messagebox show 1 time not many times row number.
this happens because every time combobox showing adding event it, fires x times.
if me.datagridview1.currentcell.columnindex = 4 dim cb combobox = ctype(e.control, combobox) removehandler cb.selectedindexchanged, addressof combobox_selectedindexchanged //remove handler if added before addhandler cb.selectedindexchanged, addressof combobox_selectedindexchanged end if
this way remove handler attached combobox.selectedindexchanged
.
from msdn
the datagridview control hosts 1 editing control @ time, , reuses editing control whenever cell type not change between edits. when attaching event-handlers editing control, must therefore take precautions avoid attaching same handler multiple times. avoid problem, remove handler event before attach handler event. prevent duplication if handler attached event, have no effect otherwise. more information, see example code in datagridviewcomboboxeditingcontrol class overview.
Comments
Post a Comment