【发布时间】:2014-01-05 22:23:11
【问题描述】:
我有一个问题,我似乎找不到答案。好的,我在表单上有一个数据集、dgv 和一个列表框。数据集有几个表,对于一些表,主键是通过列表框 selectedValueChanged 事件选择和设置的。用户单击列表框中的名称,并将项 selectedValue 分配给项变量。
item = Me.ListBoxItem.SelectedValue
Me.itemID = index
如果 dgv 中的更改尚未提交到数据库,我还有一个布尔 dsIsEditing 设置为 false。如果 dsIsEditing = true,我想要做的是阻止用户选择列表中的另一个项目。
我知道有一个带有 cancelEventArgs 参数的 ListBox 验证事件,但我不知道如何实现它。我得到的最接近的是从 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,它将在 ListBox 中显示为选中状态,然后如果我选择不继续,它将恢复原状到项目 H。我在这里头疼:) 是找到正确的代码,以便如果从消息框中选择否,则项目 B 永远不会显示为列表框中的选定项。预先感谢您的回复。
【问题讨论】: