gpt4 book ai didi

c# - TreeView AfterExpand 事件有时不起作用 C#

转载 作者:行者123 更新时间:2023-11-30 17:32:51 24 4
gpt4 key购买 nike

我有一个 TreeView 并订阅了“TreeViewConnections_AfterExpand”和“”事件。everyone TreeNode 包含 MenuScript 事件。和以下代码:

        //event
private void TreeViewConnections_AfterExpand(object sender, TreeViewEventArgs e)
{
var activeKey = e.Node.ImageKey.Replace("Inactive", "Active");
e.Node.ImageKey = activeKey;
e.Node.SelectedImageKey = activeKey;
}

//event
private void TreeViewConnections_MouseClick(object sender, MouseEventArgs e)
{
var currentNode = this.treeViewConnections.GetNodeAt(e.Location);
if (currentNode == null) return;
var currentBounds = currentNode.Bounds;
Rectangle bounds = new Rectangle(currentBounds.Left - ExpandIcon.Width, currentBounds.Y, currentBounds.Width - 5, currentBounds.Height);
if (bounds.Contains(e.Location)) return;
this.treeViewConnections.SelectedNode = currentNode;

if (e.Button == MouseButtons.Right)
{
SetupConnectionMenus(currentNode);
}
}

private void SetupConnectionMenus(TreeNode node)
{
var isOpened = node.Nodes.Count > 0;
if (node.ContextMenu == null)
{
var menu = new ContextMenuStrip();
menu.Items.AddEx("Open Connection", node.Name + "_Open", !isOpened, onClick: OpenConnection_Click, context: node);
menu.Items.AddEx("Close Connection", node.Name + "_Close", isOpened, onClick: CloseConnection_Click, context: node);
node.ContextMenuStrip = menu;
}
}

//event
private void OpenConnection_Click(object sender, EventArgs e)
{
var menuItem = sender as ToolStripMenuItem;
var currentNode = menuItem.Tag as TreeNode;
OpenConnection(currentNode);
}

//event
private void CloseConnection_Click(object sender, EventArgs e)
{
var menuItem = sender as ToolStripMenuItem;
var currentNode = menuItem.Tag as TreeNode;
currentNode.Nodes.Clear();
currentNode.Collapse();
}

private void OpenConnection(TreeNode node)
{
treeViewConnections.BeginUpdate();
//add child node to the node.
treeViewConnections.EndUpdate();
node.Expand(); //?????
}

TreeViewConnections_AfterExpand event sometime don't work. as shown in the figure:

enter image description here

但在这种情况下,我还需要做些什么吗?

最佳答案

此问题是 Node.Collapse 和 Node.Nodes.Clear() 调用引起问题的原因。正确的如下:

private void CloseConnection_Click(object sender, EventArgs e)
{
var menuItem = sender as ToolStripMenuItem;
var currentNode = menuItem.Tag as TreeNode;
currentNode.Collapse(); // Here will verify whether the current node has child nodes.
currentNode.Nodes.Clear();
}

关于c# - TreeView AfterExpand 事件有时不起作用 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45503751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com