双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

ListView右击菜单问题

Mo_DeNo Mo_DeNo 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
winform做的小程序,在程序载入的时候,会读取数据库的数据来创建根节点和子节点。设计时,为treeview添加了NodeMouseClick事件,并判断是右击时,显示ContextMemuScript。在右击菜单中有个添加节点的功能。以上说的功能都能实现。但是如果我用右击菜单中的添加节点来添加一个根节点,这时候右击这个节点,菜单是不会显示的,但是debug的话,能跑到NodeMouseClick事件里。感觉很是困惑。

这个是右击事件
private void tvTable_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
cmsNodeRightMemu = new ContextMenuStrip();

// Point ptMemuPosition =PointToScreen( new Point(e.Node.Bounds.X + e.Node.Bounds.Width, e.Node.Bounds.Y ));

cmsNodeRightMemu.TopLevel = true;
cmsNodeRightMemu.Show(tvTable,e.X,e.Y);
}
}


这个是添加节点事件
private void bbbbToolStripMenuItem_Click(object sender, EventArgs e)
{
bool hasSameNode = false;

string strRootNodeName = string.Empty, strSelectNode = string.Empty;
int intSelectNodeLevel = -1;

intSelectNodeLevel = tvTable.SelectedNode.Level;

strSelectNode = intSelectNodeLevel == 0 ? "Root" : "Sub";

strRootNodeName = Interaction.InputBox("Please Input " + strSelectNode + " Node", "Add", "New", -1, -1);
hasSameNode = ExistsSameNodeInSameLevel(strRootNodeName, intSelectNodeLevel, tvTable.SelectedNode.Parent);

while (hasSameNode)
{
MessageBox.Show("Has Same Node");

strRootNodeName = Interaction.InputBox("Please Input " + strSelectNode + " Node", "Add", "New", -1, -1);
hasSameNode = ExistsSameNodeInSameLevel(strRootNodeName, intSelectNodeLevel, tvTable.SelectedNode.Parent);
}

TreeNode trAddedNode, trSubNode;

if (intSelectNodeLevel == 0)
{
trSubNode = new TreeNode("NewChildNode");
trSubNode.Tag = intAddNodeMaster;
trSubNode.Name = "NewChildNode";
trSubNode.ContextMenuStrip = cmsNodeRightMemu;

trAddedNode = new TreeNode(strRootNodeName, new TreeNode[] {trSubNode });
trAddedNode.Name = strRootNodeName;
trAddedNode.ContextMenuStrip = cmsNodeRightMemu;

tvTable.Nodes.Add(trAddedNode);
}
else
{
trAddedNode = new TreeNode(strRootNodeName);
trAddedNode.Tag = intAddNodeMaster;
trAddedNode.Name = strRootNodeName;
trAddedNode.ContextMenuStrip = cmsNodeRightMemu;
tvTable.SelectedNode.Nodes.Add(trAddedNode);
}
}
...全文
评论 1
收藏 已收藏
分享
返回顶部
Mo_DeNo
C# 111,129 成员 642,540 内容