DataSourceProviderService,在设计时EnvDTE.Project 级别提供对数据源的访问。

来源:互联网 发布:上海注册公司 知乎 编辑:程序博客网 时间:2024/04/30 01:05

定义:

[Guid("ABE5C1F0-C96E-40c4-A22D-4A5CEC899BDC")]
public abstract class DataSourceProviderService
{
// Methods
protected DataSourceProviderService();
public abstract object AddDataSourceInstance(IDesignerHost host, DataSourceDescriptor dataSourceDescriptor);
public abstract DataSourceGroupCollection GetDataSources();
public abstract DataSourceGroup InvokeAddNewDataSource(IWin32Window parentWindow, FormStartPosition startPosition);
public abstract bool InvokeConfigureDataSource(IWin32Window parentWindow, FormStartPosition startPosition, DataSourceDescriptor dataSourceDescriptor);
public abstract void NotifyDataSourceComponentAdded(object dsc);

// Properties
public abstract bool SupportsAddNewDataSource { get; }
public abstract bool SupportsConfigureDataSource { get; }

}

所属程序集:System.Design.dll

该服务的使用方法:

代码来源:System.Design.dll

来自类:internal class DesignBindingPicker;


 

  
this.dspSvc = (DataSourceProviderService) this.serviceProvider.GetService(typeof(DataSourceProviderService));

private void addNewCtrl_Click(object sender, LinkLabelLinkClickedEventArgs e)
{
this.dspSvc = (DataSourceProviderService) this.serviceProvider.GetService(typeof(DataSourceProviderService)); if ((this.dspSvc != null) && this.dspSvc.SupportsAddNewDataSource)
{
DataSourceGroup group = this.dspSvc.InvokeAddNewDataSource(this, FormStartPosition.CenterScreen);
if ((group != null) && (group.DataSources.Count != 0))
{
DataSourceDescriptor dataSource = group.DataSources[0];
this.FillTree(new DesignBinding(dataSource, ""));
if (this.selectedNode != null)
{
int count = this.selectedNode.Nodes.Count;
if (this.context.Instance is BindingSource)
{
this.treeViewCtrl.SetSelectedItem(this.selectedNode);
}
if ((count == 0) || (this.context.Instance is BindingSource))
{
this.treeViewCtrl.SetSelectedItem(this.selectedNode);
}
else if (count == 1)
{
this.treeViewCtrl.SetSelectedItem(this.selectedNode.Nodes[0]);
}
else
{
this.ShowSelectedNode();
this.selectedNode.Expand();
this.selectedNode = null;
this.UpdateHelpText(null);
}
}
}
}
}