当前位置: 首页 > 知识库问答 >
问题:

Treeview-在NodeMouseClick事件上弹出的消息单击取消后,无法恢复以前的选择

毕浩渺
2023-03-14

考虑包含多个节点的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
    }
}
 private void TreeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
 {
        e.Cancel = true;
 }

共有1个答案

万俟修诚
2023-03-14

您可以在TreeViewBeforeselect事件中执行此操作。

如果为beforeselect事件添加了一个事件处理程序,该事件处理程序实际上只执行e.cancel=true,那么您将永远无法选择节点,因为每次都会取消选择。相反,您需要在beforeselect事件中显示您的消息框,并根据消息框的结果设置e.cancel

private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
   if (DataIsDirty())
   {
      if (MessageBox.Show(
            "Unsaved changes detected. Press OK to switch nodes and lose the change, or Cancel to stay on the current node.",
            "Unsaved Changes Detected",
            MessageBoxButtons.OKCancel) == DialogResult.Cancel)
      {
          e.Cancel = true;
      }
   }
}
 类似资料:
  • 下载整个项目。zip在这里 此问题的代码在Views文件夹中的CreateSchedule.aspx文件中。 以下是GridView的ASP.NET: 在取消选中某个框后调试事件时,网页上的复选框显示为未选中,但的值为true,即使该复选框在网页上显示为未选中。(chkRow是未选中的复选框) 更新3 我取得了一些突破。我发现复选框的问题在于嵌套的gridview位于使用JavaScript折叠和

  • 我试图在按钮单击事件上清除Popup=>ListView中的选中复选框。 我尝试过循环listview并将property设置为false,但这不起作用。 在此处输入代码x:class=“uc.mainpage”xmlns=“http://schemas.microsoft.com/winfx/2006/xaml/presentation”xmlns:x=“http://schemas.micro

  • 问题内容: 我不确定如何在我的方法中编写弹出消息框的代码。 我试图在我的方法中使用它,但是它不起作用: 问题答案: javax.swing.JOptionPane 这是我想弹出一个信息框时所调用的方法的代码,它将占据屏幕,直到被接受为止: 第一个参数(在此示例中)用于对齐对话框。使其在屏幕上居中,但是可以指定任何内容,而对话框将显示在屏幕中央。 我倾向于使用String来描述调用该框的代码在哪里,

  • 我正在使用这个库来实现节点kafka与消费者暂停和恢复方法来处理背压。我已经创建了一个小演示,我可以在其中和,但问题是在后它停止了消费消息。 这是我的代码。 任何人都可以帮助我,我在恢复消费者时做错了什么?当我启动使用者时,它只接收一条消息,并且在恢复后仍然不消耗任何其他消息。

  • 同一代码以不同的方式生成并设置和(也不同)。我发送一个,邀请为0,取消为1。UID在匹配对之间总是一致的。我错过了什么?

  • 本文向大家介绍layer弹出框确定前验证:弹出消息框的方法(弹出两个layer),包括了layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)的使用技巧和注意事项,需要的朋友参考一下 layer 弹出框中经常遇到要弹出表单进行修改数据, 因此在弹出框中的表单需要验证数据, 就需要在弹出一个layer, 默认的设置会自动关闭原来的layer, 解决办法如下: type参数: 0(信息框,