#c# #windows #treeview #contextmenu
#c# #Windows #просмотр дерева #contextmenu
Вопрос:
Я работаю над приложением Windows, которое использует представление в виде дерева. Когда я щелкаю правой кнопкой мыши по элементу просмотра дерева, он отображает контекстное меню, для некоторых конкретных командных операций контекстное меню должно быть отключено
вкратце, как отключить контекстное меню для представления в виде дерева
Комментарии:
1. у вас есть какой-нибудь пример кода или что-то еще?
2. какая у вас платформа? wpf? winforms? asp.net ? silverlight? (и т.д.?) помогите нам помочь вам. 🙂
Ответ №1:
Нет опции для отключения концепции, я так думаю, но вы можете просто показать, какие context menu
элементы необходимы следующим образом, если у вас определена древовидная структура, у каждого древовидного представления есть TAG
или вы можете определить свой собственный numbers
для этого TAG
. После этого попробуйте выполнить следующее
private void tvwACH_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
tvwACH.SelectedNode = e.Node;
if (Convert.ToInt16(e.Node.Tag) == 3)
{
New.Text = "New";
contextMenu.Items.Remove(New);
contextMenu.Items.Add(Save);
contextMenu.Items.Add(Saveas);
contextMenu.Items.Add(Remove);
contextMenu.Items.Remove(addEntry);
}
if (tvwACH.SelectedNode.Tag == null)
{
string str = tvwACH.SelectedNode.Parent.ToString().Substring(10);
if (str == "BatchHeader")
{
contextMenu.Items.Remove(New);
contextMenu.Items.Remove(Remove);
contextMenu.Items.Remove(Save);
contextMenu.Items.Remove(Saveas);
contextMenu.Items.Add(addEntry);
}
else
{
contextMenu.Items.Add(New);
New.Text = "Add new Batch";
contextMenu.Items.Remove(Remove);
contextMenu.Items.Remove(Save);
contextMenu.Items.Remove(Saveas);
contextMenu.Items.Remove(addEntry);
}
}
if (Convert.ToInt16(tvwACH.SelectedNode.Tag) == 1)
{
contextMenu.Items.Add(New);
New.Text = "New";
contextMenu.Items.Remove(Remove);
contextMenu.Items.Remove(Saveas);
contextMenu.Items.Remove(Save);
contextMenu.Items.Remove(addEntry);
}
if (Convert.ToInt16(tvwACH.SelectedNode.Tag) == 2)
{
contextMenu.Items.Add(New);
New.Text = "Add new FileHeader";
contextMenu.Items.Remove(Remove);
contextMenu.Items.Remove(Saveas);
contextMenu.Items.Remove(Save);
contextMenu.Items.Remove(addEntry);
}
}
В соответствии с вашим требованием вы можете поступить следующим образом, вам просто нужно было отключить или включить элементы, которые вы не хотели, это также работает нормально, но TAG
важно для вас
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
treeView1.SelectedNode = e.Node;
if (Convert.ToInt16(e.Node.Tag) == 1)
{
childToolStripMenuItem.Enabled = false;
rootToolStripMenuItem.Enabled = true;
}
if (Convert.ToInt16(e.Node.Tag) == 2)
{
childToolStripMenuItem.Enabled = true;
rootToolStripMenuItem.Enabled = false;
}
}