我定义了一个用户控件,
外观有三个区域
caption区域,header区域和item区域
要求在三个不同区域点击右键的时候,有不同的右键菜单弹出。
而且这三个右键菜单不是固定在控件里的,可以让使用该控件的程序自行定制
就等于说,在使用该控件的程序里,可以自行定制点击不同的区域弹出什么样的右键菜单!
请问这个要求怎么样实现?
外观有三个区域
caption区域,header区域和item区域
要求在三个不同区域点击右键的时候,有不同的右键菜单弹出。
而且这三个右键菜单不是固定在控件里的,可以让使用该控件的程序自行定制
就等于说,在使用该控件的程序里,可以自行定制点击不同的区域弹出什么样的右键菜单!
请问这个要求怎么样实现?
private MenuItem menuItem =null;
MenuItem m1
{
get{}
set{
menuItem = value;
//然后在帮定到 cm1.Add(menuItem)需要的菜单
}
}如果需要内部做些操作
public delegate void click(); //声明代理事件
public event void MenuClick();
注册到菜单上,然后在回送给调用者未测试.
而且这三个右键菜单不是固定在控件里的,可以让使用该控件的程序自行定制
设置一个空的ContextMenu,三个区域(如果没有控件,最好用Panel来代替)的ContextMenu都设为它
然后根据mousedown的位置,先判断出哪一区域,动态添加MenuItem,并为每个Item设置事件,就行了。
{
Control _Caption;
Control _Header;
Control _Item; public CaptionContextMenu
{
get{return _Caption.ContextMenu;}
set{_Caption.ContextMenu =value;}
}
public HeaderContextMenu
{
get{return _Header.ContextMenu;}
set{_Header.ContextMenu =value;}
}
public ItemContextMenu
{
get{return _Item.ContextMenu;}
set{_Item.ContextMenu =value;}
}
}
public CaptionContextMenu
.......