我有一个TreeView,其中所有节点都分配了相同的ContextMenuStrip.
当我右键单击已选择的TreeNode,然后在ContextMenuStrip中选择一个项目时,treeView1.SelectedNode用于右键单击之前选择的节点,而不是右键单击的项目.
如何更改此行为,以便在显示ContextMenuStrip之前正确选择右键单击的节点?
private void newGroupToolStripMenuItem_Click(object sender, EventArgs e)
{
TextFieldDialog t = new TextFieldDialog("New Order Group", "Enter the name of the new group");
t.ShowDialog();
if (t.DialogResult == DialogResult.OK)
{
int lastid = db.NewOrderGroup(t.Value, (int)treeView1.SelectedNode.Tag);
TreeNode node = new TreeNode(t.Value);
node.Tag = lastid;
treeView1.SelectedNode.Nodes.Add(node);
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,(int)treeView1.SelectedNode.Tag返回在我右键单击之前选择的Node的标记,而不是右键单击的Node.
它是树视图的一个怪癖,只有左鼠标按钮可以选择的节点.重置ContextMenuStrip属性并记下行为,当您右键单击突出显示时,会跳转到单击的节点,但在释放按钮后它会立即跳回.
通过为NodeMouseClick事件实现事件处理程序来修复它.选择节点并显示上下文菜单,如下所示:
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
if (e.Button == MouseButtons.Right) {
treeView1.SelectedNode = e.Node;
contextMenuStrip1.Show(treeView1, e.Location);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |