有两种方案:
1.用TreeView的NodeMouseClick事件,动态生成ContextMenu,部分属性根据该事件的e.Node换取currentnode得到,但Debug时NodeMouseClick事件被触发两次,求解。
2.在TreeView上绑ContextMenuStrip控件,想通过TreeView的GetNodeAt来获取currentnode,但currentnode始终为空,求解。谢谢
1.用TreeView的NodeMouseClick事件,动态生成ContextMenu,部分属性根据该事件的e.Node换取currentnode得到,但Debug时NodeMouseClick事件被触发两次,求解。
2.在TreeView上绑ContextMenuStrip控件,想通过TreeView的GetNodeAt来获取currentnode,但currentnode始终为空,求解。谢谢
2.贴代码
TreeNode currNode = this.ProjectList.GetNodeAt(cms.Bounds.Location);
TreeNode currNode = this.ProjectList.GetNodeAt(cms.Bounds.Location); private void treeView_MouseDown(object sender, MouseEventArgs e)
{
TreeNode node = treeView2.GetNodeAt(e.X, e.Y);
}
TreeNode currNode = this.ProjectList.GetNodeAt(cms.Bounds.Location); private void treeView_MouseDown(object sender, MouseEventArgs e)
{
TreeNode node = treeView2.GetNodeAt(e.X, e.Y);
}
我前面的代码是ContextMenu的Opening事件,这边获取node是想判断是否让右键菜单显示出来,e没法获取location,只好用sender as ContextMenuStrip里的location。
如果我用MouseDown方法,确实可以获取到node,那看来要ContextMenu在事件中动态生成,来满足我只有叶子节点被选中才显示菜单的需求?
TreeNode currNode = this.ProjectList.GetNodeAt(cms.Bounds.Location); private void treeView_MouseDown(object sender, MouseEventArgs e)
{
TreeNode node = treeView2.GetNodeAt(e.X, e.Y);
}
我前面的代码是ContextMenu的Opening事件,这边获取node是想判断是否让右键菜单显示出来,e没法获取location,只好用sender as ContextMenuStrip里的location。
如果我用MouseDown方法,确实可以获取到node,那看来要ContextMenu在事件中动态生成,来满足我只有叶子节点被选中才显示菜单的需求?本来就应该选中才显示ContextMenu,
TreeNode currNode = this.ProjectList.GetNodeAt(cms.Bounds.Location); private void treeView_MouseDown(object sender, MouseEventArgs e)
{
TreeNode node = treeView2.GetNodeAt(e.X, e.Y);
}
我前面的代码是ContextMenu的Opening事件,这边获取node是想判断是否让右键菜单显示出来,e没法获取location,只好用sender as ContextMenuStrip里的location。
如果我用MouseDown方法,确实可以获取到node,那看来要ContextMenu在事件中动态生成,来满足我只有叶子节点被选中才显示菜单的需求?本来就应该选中才显示ContextMenu,
我绑定在Treeview上, 不管点在Treeview哪里都显示,我只希望在选中叶子节点的时候才显示