5

ここに画像の説明を入力してください

Microsoft.Data.ConnectionUI.Dialog.dllおよびMicrosoft.Data.ConnectionUI.dlldllをプロジェクトに追加し、次のコードを使用します。

    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ボタンを押すことはできません。

なぜこれが機能しないのか誰かが知っていますか?

4

3 に答える 3

2

ボタンは設定に応じて有効/無効になります。

この記事の内容:http ://erikej.blogspot.com.au/2010/04/using-adonet-data-connection-dialog-in.html作成者はデータソースを「ハードコード」し、その結果、「変更」ボタンを無効にします。

データソース名を設定するときは、[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ソースを取得することをお勧めします。

于 2013-01-17T20:14:37.630 に答える
0

管理者としてVS2008を実行しても、この問題を解決できません。Winformプロジェクトで[VisualStudioホスティングプロセスを有効にする]オプションを無効にすることで、この問題を解決します。

于 2014-08-04T03:04:12.243 に答える