我想使用标准对话框来请求ADO.net连接字符串的用户输入。这里描述的oledb连接字符串很简单: MSDN Article on MSDASC.DataLinks().Prompt
我还发现了一些使用VS.(HOWTO: Using the Choose Data Source dialog of Visual Studio 2005 from your own code)的Microsoft.Data.ConnectionUI.dll和MicrosoftData.ConnectionUI.Dialog.dll的示例。
不幸的是,这些DLL没有获得重新分发的许可。
是否有标准对话框用于选择可与我的应用程序一起分发的数据源?
答案 0 :(得分:3)
@rathkopf,看起来自2010年2月以来这些DLL已被授权重新分发:
答案 1 :(得分:2)
现在可以使用这些DLL的源代码:http://blogs.msdn.com/b/vsdata/archive/2010/02/02/data-connection-dialog-source-code-is-released-on-code-gallery.aspx
您也可以使用DataLink属性以编程方式执行此操作:
在Visual Studio参考选项卡的COM选项卡中添加对ADODB.DLL(来自.NET参考)和Microsoft OLE DB服务组件1.0类型库的引用。
using ADODB;
using Microsoft.Win32;
public partial class ConnectionStringStep : Form
{
private const string MSSQL_PROVIDER = "Provider=SQLOLEDB.1";
private const string ORACLE_PROVIDER = "Provider=MSDAORA.1";
private const string MSSQL = "MSSQL";
public ConnectionStringStep()
{
InitializeComponent();
}
private static string DataBaseType()
{
//get the data from some previous screen or some kind of storage
return MyStorage.GetProperty("DATABASE_TYPE") ?? "MSSQL";
}
private void button1_Click(object sender, EventArgs e)
{
var dataBaseType = DataBaseType();
var adodbConnection = new Connection
{
ConnectionString = dataBaseType == MSSQL ? MSSQL_PROVIDER : ORACLE_PROVIDER
};
object connection = (object) adodbConnection;
var dialog = new MSDASC.DataLinks();
dialog.PromptEdit(ref connection);
connectionTextBox.Text = adodbConnection.ConnectionString;
}
}
答案 2 :(得分:1)
微软现在提供了一个提供此对话框的NuGet包:
样本用法:
var dialog = new DataConnectionDialog();
dialog.DataSources.Add(DataSource.SqlDataSource);
dialog.ConnectionString = connectionString;
if (DataConnectionDialog.Show(dialog) == System.Windows.Forms.DialogResult.OK)
{
connectionString = dialog.ConnectionString;
}
答案 3 :(得分:0)
它是相关的,但我现在确定如何在应用程序中嵌入此行为。
每次我需要一个,我创建一个空文本文件,将其文件扩展名更改为“.udl”并双击它;当我完成后,我关闭该应用程序,将该文件重命名为“.txt”并使用记事本打开。
答案 4 :(得分:0)
看来这样的野兽不存在。我已经编写了自己的对话框,可以根据需要将其包含在项目中。
<强>更新强>
这些DLL的源代码现在可以根据@ code4life的答案获得。