是不是应该在treeview的mouse_down 事件里判断呢?
如果是,那怎么让contextMenu不弹出来呢?
如果是,那怎么让contextMenu不弹出来呢?
解决方案 »
- 如何实现软件编辑窗口的预览
- 有谁熟悉lamda语法的,帮忙翻写下
- 有一个问题 我想求教各位开发者
- datatable 如何设置decimal的精度
- treeview 单表 两列菜单 C#
- 怎样让WinForm在窗口之间传递参数
- listview and treeveiw ,help me!!
- GRIDVIEW删除问题(请高手指教)
- 怎样取得TreeView 上所有NODE的数目及对象,用最简单的方法获得啊
- 我在page_load()事件中动态创建控件,能成功,而在button_click()事件中创建,却失败,错误信息:“未实例化”
- WMP 怎么把avi原始尺寸拉升?
- .net 环境下C#实现"在线编辑器"的问题
TreeNode ClickNode = treeView1.GetNodeAt(ClickPoint); //save ClickNode somewhere
[C#]
private void treeView1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
Point ClickPoint = new Point(e.X,e.Y);
TreeNode ClickNode = treeView1.GetNodeAt(ClickPoint);
if(ClickNode == null) return;
// Convert from Tree coordinates to Screen coordinates
Point ScreenPoint = treeView1.PointToScreen(ClickPoint);
// Convert from Screen coordinates to Formc coordinates
Point FormPoint = this.PointToClient(ScreenPoint);
// Show context menu
contextmenu.MenuItems.Clear();
contextmenu.MenuItems.Add("Item1");
contextmenu.MenuItems.Add("Item2");
contextmenu.Show(this,FormPoint);
}
}
TreeNode tn =this.tree .GetNodeAt(e.X,e.Y) as TreeNode;
if(tn == null)
{
for(int i=0;i<this.tree.ContextMenu.MenuItems.Count;i++)
{
this.tree.ContextMenu.MenuItems[i].Visible = false;
}
return ;
}
else
{
//选中当前节点
this.tree .SelectedNode = tn;
for(int i=0;i<this.tree.ContextMenu.MenuItems.Count;i++)
{
this.tree.ContextMenu.MenuItems[i].Visible = true;
}
}
{
if (e.Button == MouseButtons.Right)
{
TreeNode tn = this.treeView1.GetNodeAt(e.X, e.Y);
if (tn != null)
{
this.contextMenu.Show(this.treeView1,e.Location);
}
}
}
private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (treeView1.GetNodeAt(e.X,e.Y)!=null)
{
this.treeView1.ContextMenu = this.contextMenu1;
}
else
{
this.treeView1.ContextMenu = null;
}
}
#region TreeView的事件操作
private void OnTreeViewAfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
switch(e.Node.Text)
{
case "Folder":
MessageBox.Show(this,e.Node.Text);
break;
case "Friend":
str_flag ="f";
break;
case "Relative":
str_flag ="r";
break;
case "":
str_flag="";
break;
default:
str_flag="";
break;
}
}
private void OnTreeViewMenuMouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Right)
{
switch(str_flag)
{
case "f":
case "r":
this.contextMenu1.Show(this.treeView1,(new Point(e.X,e.Y)));
break;
default:
break;
}
}
}
#endregion
{
if (treeView1.GetNodeAt(e.X,e.Y)!=null)
{this.treeView1.ContextMenu = this.contextMenu1;}
else{this.treeView1.ContextMenu = null;}
}