1. 想在treeView上添加右键菜单栏
* 将contextMenuStrip控件添加到主窗体上, 同时在这个控件的属性中修改"Items"属性, 即添加子菜单项 .

* 在treeView的"contextMenuStrip"属性上选择上一步添加的contextMenuStrip控件 .

* 到这运行程序并且在treeView上右键就可以看到自己新建的菜单栏了 .

燃鹅,
当你在写了打开了外部了文件(比如mdb), 并将其解析读取到treeView上后(同时写了treeView的AfterSelect事件), 这时直接在treeView空白处右键居然打开第一个节点 !
原因就是执行了 AfterSelect 事件, 并且该事件的形参"TreeViewEventArgs"(e)对象的"e.Node"已经默认等于了第一个节点, 所以在 AfterSelect 中的 switch 中进入了第一个 case, 所以展开了第一个节点 .
解决,
在treeView上修改 beforeSelect事件如下 :
bool isfirst = true;
private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
{
if (isfirst)
{
e.Cancel = true;
isfirst = false;
}
}
即在treeView选择前将treeView的TreeViewCancelEventArgs参数设为true, 这样在重新运行并加载数据库后在treeView上右键就不会默认展开第一个节点了 .
在C#中,当在treeView添加右键菜单后,如果从外部文件加载数据并触发AfterSelect事件,treeView会默认展开第一个节点。原因是AfterSelect事件的参数已设置为第一个节点。为解决这个问题,可以修改treeView的BeforeSelect事件,在事件中将TreeViewCancelEventArgs参数设为true,阻止默认选择,从而避免自动展开第一个节点。
4432

被折叠的 条评论
为什么被折叠?



