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

本文介绍了一个抽象类DataSourceProviderService,该类定义了用于提供数据源实例和服务的方法和属性。通过该服务可以添加新的数据源、配置现有数据源,并获取数据源集合。提供了使用示例,展示了如何利用此类实现数据源的添加和填充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义:

[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);
}
}
}
}
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值