早些时候我问过如何取消 WPF TreeViewItem.Selected 事件.
回答者建议我在选择发生之前处理 PreviewMouseDown 事件。这就说得通了。
我已经尝试这样做了...
XAML...
<TreeView Name="TreeViewThings"
...
PreviewMouseDown="TreeViewThings_PreviewMouseDown"
TreeViewItem.Expanded="TreeViewThings_Expanded"
TreeViewItem.Selected="TreeViewThings_Selected" >
视觉基础...
Sub TreeViewThings_PreviewMouseDown(...)
If UnsavedChangesExist() Then
e.Handled = UserCancelled()
Else
e.Handled = False
End If
End Sub
Function UnsavedChangesExist() As Boolean
...
End Function
Function UserCancelled() As Boolean
Return MessageBox.Show("Discard your unsaved changes?", _
"Unsaved Changes", _
MessageBoxButton.OKCancel, _
MessageBoxImage.Question) = MessageBoxResult.Cancel
End Function
这只是一种工作...
- 如果没有未保存的更改,那么它会正常进行并执行 TreeViewThings_Selected()。
如果有未保存的更改,那么我会看到消息框...
MessageBox:继续并放弃未保存的更改吗?确定/取消 http://img25.imageshack.us/img25/141/discard2yk0.gif
我认为有一个 MessageBox 的事实不知何故搞砸了。
我究竟做错了什么?
问题是消息框导致您的树失去焦点。您是否尝试过在消息框消失后将焦点设置回树?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)