Да, это возможно, но вам нужно добавить некоторую логику в свои операторы if
, которая проверяет, что узел, по которому щелкнул пользователь, является корневым узлом.
Но как мы узнаем, является ли это корневым узлом? Хорошо, продумав это, мы можем определить корневой узел как тот, у которого нет родителей. Таким образом, вы можете просто проверить Parent
свойство TreeNode
и убедиться, что оно null
.
Измените ваш код, чтобы он выглядел примерно так:
if (e.Button == MouseButtons.Right)
{
// Select the clicked node
treeView1.SelectedNode = treeView1.GetNodeAt(e.X, e.Y);
if (treeView1.SelectedNode != null && treeView.SelectedNode.Parent == null)
{
myContextMenuStrip.Show(treeView1, e.Location)
}
}
Вы хотите сохранить проверку того, что сам узел не является null
, потому что вы не хотите показывать контекстное меню, когда они еще не нажали на узле, но вам нужно добавьте проверку для родителя, потому что она говорит вам, является ли это корневым узлом. Способ, которым вы указываете, что программно использует логическое И, который является оператором &&
в C #.