考虑一个包含多个节点的TreeView控件。选择节点后,某些信息将显示在文本框中。可以修改和保存此信息。偶然地,如果用户导航到另一个节点而不保存,则会显示一个弹出窗口,要求用户保存或取消操作。如果单击“取消”,则选择应保留在先前选择的节点上,而不是新节点上。显示弹出窗口的逻辑是在TreeView的NodeMouseClick()事件中编写的。有什么办法可以做到这一点?下面是示例代码段。
private void TreeView1_NodeMouseClick(object sender,
TreeNodeMouseClickEventArgs e)
{
DialogResult dr = MessageBox.Show("Cancel
Clicked......!!!","Information", MessageBoxButtons.OKCancel,
MessageBoxIcon.Information);
if(dr == DialogResult.Cancel)
{
//Need to handle previous node selection
}
}
NodeMouseClick()事件似乎并未提供任何信息来取消该事件。我已经尝试过使用以下代码片段取消TreeView的BeforeSelect()事件。
private void TreeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
e.Cancel = true;
}
但是上面的代码删除了所有节点上的选择,并不能满足需要。有什么办法可以保留以前的选择?
答案 0 :(得分:0)
您可以在TreeView
的{{1}}事件中执行此操作。
如果为BeforeSelect
事件添加了一个事件处理程序,而该事件处理程序实际上只是BeforeSelect
,那么您将永远无法选择一个节点,因为每次选择都会被取消。相反,您需要在e.Cancel = true
事件内部显示您的消息框,并根据消息框的结果设置BeforeSelect
。
e.Cancel