在c#中进行树视图控制
本文关键字:视图 控制 | 更新日期: 2023-09-27 17:58:44
我正在开发一个使用树视图的Windows应用程序。当我右键单击树状视图项目时,它将显示上下文菜单。对于某些特定的命令操作,上下文菜单应禁用
简而言之,如何禁用树视图的上下文菜单
我认为没有禁用概念的选项,但如果您定义了树结构,每个树视图都有一个TAG
,或者您可以为这个TAG
定义自己的numbers
,那么您可以如下显示需要什么context menu
项。之后按照以下进行尝试
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;
}
}