我将Microsoft.Data.ConnectionUI.Dialog.dll和Microsoft.Data.ConnectionUI.dll dll添加到我的项目中,并使用此代码:
Microsoft.Data.ConnectionUI.DataConnectionDialog dcd = new Microsoft.Data.ConnectionUI.DataConnectionDialog();
Microsoft.Data.ConnectionUI.DataSource.AddStandardDataSources(dcd);
if (Microsoft.Data.ConnectionUI.DataConnectionDialog.Show(dcd) == System.Windows.Forms.DialogResult.OK)
{
//
}
else
{
//
}
当我在普通的Windows应用程序中使用它时,一切似乎都没问题(显示带有“高级”按钮的标准VS数据连接对话框)。当我在SETUP PROJECT中使用它时,它只显示高级对话框并且禁用了OK按钮。用户可以测试连接,但无法按OK按钮。
有谁知道为什么这不起作用?
答案 0 :(得分:2)
根据设置启用/禁用按钮。
在本文中:http://erikej.blogspot.com.au/2010/04/using-adonet-data-connection-dialog-in.html作者“硬编码”了数据源,因此禁用了“更改”按钮。
设置DataSource名称时,应启用“确定”按钮。我挖出Data Connection Dialog Source Code
代码向您展示:
http://archive.msdn.microsoft.com/Connection/Release/ProjectReleases.aspx?ReleaseId=3863
在Micrsost.Data.ConnectionUI.Dialog项目中,打开DataConnectionDialog.cs类,您可以看到这是事件:
private void ConfigureAcceptButton(object sender, EventArgs e)
{
try
{
acceptButton.Enabled = (ConnectionProperties != null) ? ConnectionProperties.IsComplete : false;
}
catch
{
acceptButton.Enabled = true;
}
}
以上事件与ConnectionProperties方法挂钩,并在每次触发PropertyChange事件时调用:
properties.PropertyChanged += new EventHandler(ConfigureAcceptButton);
要启用“确定”按钮,您需要满足ConnectionProperties.IsComplete条件。
答案 1 :(得分:1)
当我从PowerPoint插件运行DataConnectionDialog时遇到了同样的问题。
问题是SqlConnectionUIControl必须在STA线程中运行。 这是我工作的代码。
单击加载按钮,在线程中启动数据连接器。
private void dataSourceSelectionButton_Click(object sender, EventArgs e)
{
Thread browseThread = new Thread(promptForConnectionString);
browseThread.TrySetApartmentState(ApartmentState.STA);
browseThread.Start();
}
打开对话框。
public string ConnectionString { get; set; }
private void promptForDataConnection()
{
DataConnectionDialog dataConnection = new DataConnectionDialog();
DataConnectionConfiguration connectionConfiguration = new DataConnectionConfiguration(null);
connectionConfiguration.LoadConfiguration(dataConnection);
if (DataConnectionDialog.Show(dataConnection) == DialogResult.OK)
{
connectionConfiguration.SaveConfiguration(dataConnection);
this.ConnectionString = dataConnection.ConnectionString;
}
}
如果这没有用,请选择DataConnectionDialog Source。
答案 2 :(得分:0)
我无法通过将VS2008作为Admin运行来解决此问题。我通过禁用"启用Visual Studio托管过程来解决这个问题" Winform项目中的选项。