4


2

ツリービューでの選択に基づいてコンテキストメニュー項目を無効にすることは可能ですか

次のようにツリービューのノードのいくつかの種類があります

ルート|→ some.txt(実行時に追加されたテキストファイル)|→ Child(some.txtの子)|→ child1(子の子)

コンテキストメニューを、[新規]および[削除]などのオプションで設計しました

必要なのは、ルート、子、または子を右クリックするときに、削除オプションを無効にすることです

2 Answer


9


ContextMenuの場合、http://msdn.microsoft.com/en-us/library/system.windows.forms.contextmenu.popup.aspx [ContextMenu.Popup]イベントを処理し、メニューの前にメニューオプションを有効/無効にすることができます。示されています。

ContextMenuStripの場合、http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripdropdown.opening.aspx [Opening]イベントを使用して同じことができます。

たとえば、メニュー項目のTagプロパティを使用して、削除がサポートされているかどうかを判断する場合(これは単なる例です)。 このようなことができます

private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
  if ((int)treeView1.SelectedNode.Tag == 1)
  {
    removeToolStripMenuItem.Enabled = true;
  }
  else
  {
    removeToolStripMenuItem.Enabled = false;
  }
}


0


// Remove all the Empty sub menu items
int counter = MainMenu.Items[1].ChildItems.Count;
for(int i=0; i