5

在此处输入图像描述

我将 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 中使用它时,它只显示高级对话框并且“确定”按钮被禁用。用户可以测试连接但不能按确定按钮。

有谁知道为什么这不起作用?

4

3 回答 3

2

根据设置启用/禁用按钮。

在这篇文章中:http ://erikej.blogspot.com.au/2010/04/using-adonet-data-connection-dialog-in.html作者“硬编码”了数据源,从而禁用了“更改”按钮。

设置 DataSource 名称时,应启用 OK 按钮。我挖出 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);

要启用 OK 按钮,您需要满足 ConnectionProperties.IsComplete 条件。

于 2012-05-07T06:26:01.793 回答
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

于 2013-01-17T20:14:37.630 回答
0

我无法通过以管理员身份运行 VS2008 来解决此问题。我通过禁用 Winform 项目中的“启用 Visual Studio 托管进程”选项来解决此问题。

于 2014-08-04T03:04:12.243 回答