为 TreeView 中一个级别上的所有节点设置 ContextMenuStrip?
Setting the ContextMenuStrip for all nodes on a level in a TreeView?
我真的很难想出一个聪明的方法来为正确的节点设置正确的 ContextMenuStrip。我有一个具有 3 个级别的树视图。除了它之外,我还创建了 3 个不同的 ContextMenuStrip,每个都有各自的级别。有没有人遇到过解决这个问题的简单方法或技巧?
还有没有办法让它右键单击一个节点使其成为选定的节点?或者又名与左键单击相同。
很抱歉二合一,但我想如果有人对这个主题有足够的了解来解决我的一个问题,那么他们很有可能也会知道第二个问题。
编辑:我用这行代码找到了第二个问题的解决方案:
treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node;
使用 NodeMouseClick 事件设置所选节点的 ContextMenuStrip 属性:
void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
if (e.Button == MouseButtons.Right) {
treeView1.SelectedNode = e.Node;
}
if (e.Node.Level == 0) {
e.Node.ContextMenuStrip = cms1;
} else if (e.Node.Level == 1) {
e.Node.ContextMenuStrip = cms2;
} else if (e.Node.Level == 2) {
e.Node.ContextMenuStrip = cms3;
}
}
我真的很难想出一个聪明的方法来为正确的节点设置正确的 ContextMenuStrip。我有一个具有 3 个级别的树视图。除了它之外,我还创建了 3 个不同的 ContextMenuStrip,每个都有各自的级别。有没有人遇到过解决这个问题的简单方法或技巧?
还有没有办法让它右键单击一个节点使其成为选定的节点?或者又名与左键单击相同。
很抱歉二合一,但我想如果有人对这个主题有足够的了解来解决我的一个问题,那么他们很有可能也会知道第二个问题。
编辑:我用这行代码找到了第二个问题的解决方案:
treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node;
使用 NodeMouseClick 事件设置所选节点的 ContextMenuStrip 属性:
void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
if (e.Button == MouseButtons.Right) {
treeView1.SelectedNode = e.Node;
}
if (e.Node.Level == 0) {
e.Node.ContextMenuStrip = cms1;
} else if (e.Node.Level == 1) {
e.Node.ContextMenuStrip = cms2;
} else if (e.Node.Level == 2) {
e.Node.ContextMenuStrip = cms3;
}
}