orhtej2 建议我的问题可能是确定在 ContextMenuStrip 上使用了什么控件。这几乎是一个重复,但我的场景有一个显着差异。有关详细信息,请参阅我修改后的问题和我的答案。
请参阅下面的我的代码。我的目标是更清楚地确定在左键单击其 ContextMenuItems 之一后右键单击哪个 TreeNode。
现在,当我右键单击两个子节点之一时, 中的if语句TreeView1_NodeMouseClick会将单击TreeNode的treeViewClickedNode TreeNode对象加载到全局对象中。然后,当我左键单击两者之一时contextMenuStripChildNode ToolStripMenuItem,该DocumentActionToolStripMenuItem_CheckStateChanged方法被触发。然后我可以检查检查状态。如果它被选中,我可以对treeViewClickedNode TreeNode.
我的问题:是否有一种更清晰的方法来确定在左键单击其 ContextMenuStrip 项目之一后右键单击哪个 TreeNode,即,是否有办法取消全局变量treeViewClickedNode?
注意:我在设计器中所做的唯一一件事就是放置treeview1在 上Form1,将其停靠到Form1并将“treeview1”设置NodeMouseClick为TreeView1_NodeMouseClick
using System;
using System.Windows.Forms;
namespace WindowsFormsApp_Scratch
{
public partial class Form1 : Form
{
TreeNode treeViewClickedNode;
ContextMenu mnu = new ContextMenu();
public Form1()
{
InitializeComponent();
// Create the root node.
TreeNode treeNodeRoot = new TreeNode("Documents");
// Add the root node to the TreeView.
treeView1.Nodes.Add(treeNodeRoot);
//Create and add child 2 nodes each with a two item ContextMenuStrip.
string[] childNodeLabels = { "document1.docx", "document2.docx"};
string[] contextItemLabels = { "Action A", "Action B" };
foreach (String childNodeLabel in childNodeLabels)
{
TreeNode treeNode = treeNodeRoot.Nodes.Add(childNodeLabel);
// Create a ContextMenuStrip for this child node.
ContextMenuStrip contextMenuStripChildNode = new ContextMenuStrip
{
ShowCheckMargin = true,
ShowImageMargin = false
};
千巷猫影
相关分类