为了在属性栏显示事件栏,我查了很多资料之后,
我用了如下的方法:

INameCreationService nameCreationService = GetService(typeof(INameCreationService))as INameCreationService;
if(nameCreationService==null)
{throw new Exception("Failed to get INameCreationService.");}
string name = nameCreationService.CreateName(host,propertyGrid.SelectedObject.GetType());

//IDEContainer 这个类是我在SharpDevelop 中找到的,我看它就是这样用的ISite site = new IDEContainer(provider).CreateSite(name,propertyGrid.SelectedObject as IComponent);
propertyGrid.Site = site;
propertyGrid.PropertyTabs.AddTabType(typeof(System.Windows.Forms.Design.EventsTab));


其中:
public class IDEContainer : Container
{
class IDESite : ISite
{
private string name = "";
private IComponent component;
private IDEContainer container;

public IDESite(IComponent sitedComponent, IDEContainer site, string aName)
{
component = sitedComponent;
container = site;
name = aName;
} public IComponent Component
{
get{ return component;}
}
public IContainer Container
{
get{return container;}
} public bool DesignMode
{
get{return false;}
} public string Name 
{
get{ return name;}
set{name=value;}
} public object GetService(Type serviceType)
{
// Console.WriteLine("REQUEST SERVICE : " + serviceType);
object o = container.GetService(serviceType);

return o;
}
} public IDEContainer (IServiceProvider sp)
{
serviceProvider = sp;
} protected override object GetService(Type serviceType)
{
// Console.WriteLine("service {0} requested from IDEContainer", serviceType);
object service = base.GetService(serviceType);
if (service == null) 
{
service = serviceProvider.GetService(serviceType);
}
// Console.WriteLine("Returned  : " + service);
return service;
} public ISite CreateSite(string name,IComponent component)
{
return CreateSite(component, name);
}

protected override ISite CreateSite(IComponent component,string name)
{
ISite site = base.CreateSite(component,name);
if (site == null) 
{
}
return new IDESite(component,this,name);
}

private IServiceProvider serviceProvider;
}
现在事件栏可以显示出来,但是里面却没有组件对应事件的内容
请问各位怎么解决这个问题,
望不吝指教,
多谢!