Tjenare ! Hur kan jag skriva en liknande "Cancel" på en listview's: SelectedIndexChanged event ? Löste problemet med en massa workarounds ..Cancel på Listview.SelectedIndexChanged - Hur sjutton ??
Jag har nämligen textboxar som laddas med data när man valt en ListViewItem, och ändrar man något har jag en IsDirty variabel, och försöker man välja en annan ListViewItem så frågar jag om man vill spara/förkasta/avbryta ändrad data med hjälp av: MsgBox.YesNoCancel.
"Yes" funkar, jag uppdaterar data och låter SelectedIndexChanged göra sitt.
"Nu" funkar, jag struntar i att uppdatera data och låter SelectedIndexChanged göra sitt.
"Cancel" fungerar inte. ListView.SelectedItems Ska INTE ändras, och man ska ha samma item vald och låta textboxarna vara.
Men hur sjutton lyckas jag med detta? SelectedIndexChanged körs ju två gånger, en gång innan man håller på lämna nuvarande vald item, och en gång på ny vald item..
Nedan klistrar jag in kod som jag försökt få detta att funka med, men det går inte..
<code>
Private Sub lvProdukt_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles lvProdukt.SelectedIndexChanged
If CancelIndex_Change Then
Exit Sub
End If
If Me.lvProdukt.SelectedItems.Count <= 0 Then
'man håller på att byta itemselected. Utför koll om något är dirty här.
'funktionen nedan sättar CancelIndex_Change = True, om man väljer cancel.
fnCheckForChanges()
Else
'itemselected har blivit bytt. ladda vald product.
LastSelectedIndex = lvProdukt.SelectedItems(0).Index
fnLoadProdukt()
End If
End Sub
</code>
ps: jag har stängt av MultiSelect.
Tackar oändligt mycket för hjälp !Sv: Cancel på Listview.SelectedIndexChanged - Hur sjutton ??
Såhär ser det ut:
'cancel indexchange?
If CancelIndex_Event Then Exit Sub
If CancelIndex_Change Then
CancelIndex_Event = True
lvProdukt.Items(LastSelectedIndex).Selected = True
CancelIndex_Event = False
CancelIndex_Change = False
Exit Sub
End If
Gillar inte ListView längre.