我写了一个组件,用下面语句描述,在工具箱里面能够看见我的组件,可是拖出来,它老是跑到设计面板下面去了(比如窗体),
我希望能够把它拖出来就显示到设计面板上,当然我试了把[Designer(typeof(CompDesigner1))]去掉就可以了,不过我在
CompDesigner1中给组件加了几个菜单,用来自动生成一些熟悉,所以我希望能够显示出控件,这些自定义的菜单也能保留,我知道这样肯定是可以的,VS自带了许多控件都有这个功能,比如combobox,鼠标瞄上面后,它的右上角会出现一个小箭头,点击就会出来一系列菜单,我就是想实现这个效果,请大师们指教,下面是我类的申明: [ToolboxItem(true)]
[ToolboxBitmap(@"D:\BjdddCSharpDev\Components\Resources\1.bmp")]
[Designer(typeof(CompDesigner1))]
public partial class ComponentTest1 : PictureBox其中CompDesigner1继承于: public class CompDesigner1 : ComponentDesigner
我希望能够把它拖出来就显示到设计面板上,当然我试了把[Designer(typeof(CompDesigner1))]去掉就可以了,不过我在
CompDesigner1中给组件加了几个菜单,用来自动生成一些熟悉,所以我希望能够显示出控件,这些自定义的菜单也能保留,我知道这样肯定是可以的,VS自带了许多控件都有这个功能,比如combobox,鼠标瞄上面后,它的右上角会出现一个小箭头,点击就会出来一系列菜单,我就是想实现这个效果,请大师们指教,下面是我类的申明: [ToolboxItem(true)]
[ToolboxBitmap(@"D:\BjdddCSharpDev\Components\Resources\1.bmp")]
[Designer(typeof(CompDesigner1))]
public partial class ComponentTest1 : PictureBox其中CompDesigner1继承于: public class CompDesigner1 : ComponentDesigner
解决方案 »
- 三个同名文本框怎么获得内容【100分】
- 这样开发的C/S软件算侵权吗?
- 问一个简单的C语言问题
- 想做个实时更新的曲线图,类似于任务管理器里面的CPU利率用那种曲线
- 使用.Net FrameWork 的Trace或TraceSource类时,如果设置配置文件.....
- 如何的VS.net 2005中设计动态数据源的报表文件?TKS
- c#winform 怎么打印.doc和.rtf的文档啊,各位帮帮忙啊,谢谢了~~~~~~~~~``
- 我想在一个文件前面加入几个字节,请问怎么实现?
- windows窗体应用程序中,怎样实现两个picturebox的连线功能
- 处理字符串!
- 如何保存图片到数据库中
- 存储过程 触发器 事务 怎样理解
=》
public class CompDesigner1 : DocumentDesigner
抛错如下:服务容器中已存在服务System.Windows.Forms.Design.IEventHandlerService.
参数名:serviceType
请帮我分析下,谢谢
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.Design;
using System.Windows.Forms;
using System.ComponentModel;
using System.Windows.Forms.Design;namespace Bjddd.Dev.Components
{
public class CompDesigner1 : DocumentDesigner
{
ComponentTest test;
IDesignerHost host;
IComponentChangeService service;
DesignerTransaction designTran;
string testName; DesignerVerbCollection m_verbs; public override DesignerVerbCollection Verbs
{
get
{
if (m_verbs == null)
{
m_verbs = new DesignerVerbCollection();
m_verbs.Add(new DesignerVerb("生成东东", new EventHandler(OnGen)));
m_verbs.Add(new DesignerVerb("生成DD", new EventHandler(OnDD)));
}
return m_verbs;
}
} private void OnGen(object sender, EventArgs e)
{
if (Component is ComponentTest)
{
test = (ComponentTest)Component;
host = (IDesignerHost)GetService(typeof(IDesignerHost));
testName = TypeDescriptor.GetProperties(Component)["Name"].GetValue(Component).ToString(); if (host == null)
{
return;
} if (test.ID != 1000000)
{
designTran = host.CreateTransaction();
service = (IComponentChangeService)GetService(typeof(IComponentChangeService));
test.ID = 1000000;
service.OnComponentChanged(test, null, null, null);
designTran.Commit();
MessageBox.Show("生成成功!");
}
}
} private void OnDD(object sender, EventArgs e)
{
if (Component is ComponentTest)
{
test = (ComponentTest)Component;
host = (IDesignerHost)GetService(typeof(IDesignerHost));
testName = TypeDescriptor.GetProperties(Component)["Name"].GetValue(Component).ToString(); if (host == null)
{
return;
} if (test.Fields != null)
{
designTran = host.CreateTransaction();
service = (IComponentChangeService)GetService(typeof(IComponentChangeService));
test.Fields.Add(1);
test.Fields.Add(2);
service.OnComponentChanged(test, null, null, null);
Button b = (Button)host.CreateComponent(typeof(Button));
designTran.Commit();
MessageBox.Show("生成成功!");
}
}
} }
}