上面的已经看过了,现在不会通过接口来实现右键菜单。
我的目的就是在窗体设计器添加右键菜单,如果有其他方法,也可以不用这个方法,C币没了,求各位给个代码。
已经尝试解决闪烁的问题,不过没有什么用,不管是SetStyle还是CreateParams都没有用,多半怀疑是动态创建导致的,因为TabControl和MenuItem还有ToolBox都重写了,就这个DesignSurface不会重写。求解决办法,目前没找到SharpDevelop,谁能提供下源码研究下也许可以。
设计器是个天坑,怕都爬不起来那种
DesignSurface的右键菜单要用MenuCommandService
继承MenuCommandService,重写ShowContextMenu方法
public class MyMenu : MenuCommandService
{
public MyMenu(IServiceProvider serviceProvider) : base(serviceProvider)
{
}
public override void ShowContextMenu(CommandID menuID, int x, int y)
{
ContextMenuStrip menu = new ContextMenuStrip();
menu.Items.Add("Test");
menu.Show(new Point(x, y));
base.ShowContextMenu(menuID, x, y);
}
}
private void Form1_Load(object sender, EventArgs e)
{
DesignSurface surface = new DesignSurface();
surface.BeginLoad(typeof(UserControl));
Control designview = (Control)surface.View;
designview.Size = new Size(818, 613);
Controls.Add(designview);
IServiceContainer servicecontainer = (IServiceContainer)surface.GetService(typeof(IServiceContainer));
servicecontainer.AddService(typeof(IMenuCommandService), new MyMenu(surface));
}
应用就是加到DesignSurface的服务里面去
接下来就是ContextMenuStrip操作