Vb.net 列表框取消selectedValueChanged事件
我有个问题,我似乎找不到答案。好的,我在表单上有一个数据集、dgv和一个列表框。数据集有几个表,对于某些表,通过listbox selectedValueChanged事件选择并设置主键。用户单击列表框中的名称,然后将item selectedValue分配给item变量Vb.net 列表框取消selectedValueChanged事件,vb.net,listbox,Vb.net,Listbox,我有个问题,我似乎找不到答案。好的,我在表单上有一个数据集、dgv和一个列表框。数据集有几个表,对于某些表,通过listbox selectedValueChanged事件选择并设置主键。用户单击列表框中的名称,然后将item selectedValue分配给item变量 item = Me.ListBoxItem.SelectedValue Me.itemID = index 我还有一个布尔值dsIsEditing,如果dgv中的更改尚未提交到数据库,它将设置为false。如果dsIsEdi
item = Me.ListBoxItem.SelectedValue
Me.itemID = index
我还有一个布尔值dsIsEditing,如果dgv中的更改尚未提交到数据库,它将设置为false。如果dsIsEditing=true,我要做的是阻止用户在列表中选择另一项
我知道有一个ListBox验证事件带有cancelEventArgs参数,但我不知道如何实现它。我得到的最接近的结果是从ListBoxItem selectedValueChanged事件中实现以下代码:
If dsIsEditing = True Then
Dim result As MsgBoxResult
Dim clearMsg As String
clearMsg = "You have unsave changes. Are you sure you " & _
"want to proceede? Any unsave changes will be lost."
result = MessageBox.Show(clearMsg, "Switching Order Selection", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2)
If result = MsgBoxResult.No Then
RemoveHandler ListBoxItem.SelectedValueChanged, AddressOfListBoxItem_SelectedValueChanged
Me.ListBoxItem.SelectedValue = Me.itemID
AddHandler ListBoxItem.SelectedValueChanged, AddressOf ListBoxItem_SelectedValueChanged
Exit Sub
End If
End If
代码按照我的要求执行,但假设当前项目是项目H,如果单击项目B,它将在列表框中显示为选中,然后,如果我选择不继续,它将返回到项目H。我在这里最头疼的是:)找到正确的代码,这样,如果从messageBox中选择“否”,则项目B就不会在列表框中显示为所选。提前感谢您的回复 在设计用户界面交互时,我发现阻止用户做某件事,而不是告诉他们这件事不正常,然后试图撤销他们所做的事情,是一种更好的用户体验 在您的情况下,我要做的是,一旦dsIsEditing标志设置为true,禁用列表框,然后启用取消(或撤消)编辑按钮 “取消编辑”按钮将向用户询问与上述问题相同的问题,并执行任何必要的操作 成功保存更改后,重新启用列表框并禁用“取消编辑”按钮 如果出于某种原因,这不起作用,您可以:
谢谢你的回复。根据你的建议,我想我是在正确的轨道上禁用ListBox控件的。我还有一个DateTimePicker控件,一旦dsIsEditing=True,我就将其设置为禁用。我本应该对列表框也这么做的。还感谢您提供代码示例的链接。当心。